国产超碰人人做人人爽av动图,99久久免费只有精品国产,青青视频精品观看视频,亚洲成a人片在线观看无码下载 ,天天做av天天爱天天爽,国产亚洲精品一区二三区,国产高清视频色拍,亚洲乱理伦片在线观看中字
MENU 服務(wù) 案例
網(wǎng)站建設(shè)-網(wǎng)站設(shè)計(jì)-北京網(wǎng)站建設(shè)-高端網(wǎng)站制作公司-尚品中國
我們通過擁抱變化創(chuàng)造
360°的品牌價(jià)值__
簡體
簡體中文 English

尚品與山東真諾智能設(shè)備有限公司簽署網(wǎng)站改版合作協(xié)議

類型:尚品動態(tài) 了解更多

[北京網(wǎng)站制作]PHP-CGI 進(jìn)程 CPU 100% 與 file_get_contents 函數(shù)的關(guān)系

來源:尚品中國| 類型:網(wǎng)站百科 |時(shí)間:2011-10-23

PHP-CGI 進(jìn)程 CPU 100% 與 file_get_contents 函數(shù)的關(guān)系

有時(shí)候,運(yùn)行 Nginx、PHP-CGI(php-fpm) Web服務(wù)的 Linux 服務(wù)器,突然系統(tǒng)負(fù)載上升,使用 top 命令查看,很多 php-cgi 進(jìn)程 CPU 使用率接近100%。后來,我通過跟蹤發(fā)現(xiàn),這類情況的出現(xiàn),跟 PHP 的 file_get_contents() 函數(shù)有著密切的關(guān)系。(北京網(wǎng)站建設(shè))

  大、中型網(wǎng)站中,基于 HTTP 協(xié)議的 API 接口調(diào)用,是家常便飯。PHP 程序員們喜歡使用簡單便捷的 file_get_contents("http://example.com/") 函數(shù),來獲取一個(gè) URL 的返回內(nèi)容,但是,如果 http://example.com/ 這個(gè)網(wǎng)站響應(yīng)緩慢,file_get_contents() 就會一直卡在那兒,不會超時(shí)。

  我們知道,在 php.ini 中,有一個(gè)參數(shù) max_execution_time 可以設(shè)置 PHP 腳本的最大執(zhí)行時(shí)間,但是,在 php-cgi(php-fpm) 中,該參數(shù)不會起效。真正能夠控制 PHP 腳本最大執(zhí)行時(shí)間的是 php-fpm.conf 配置文件中的以下參數(shù):

  1. The timeout (in seconds) for serving a single request after which the worker process will be terminated    
  2. Should be used when 'max_execution_time' ini option does not stop script execution for some reason    
  3. '0s' means 'off'    
  4. <value name="request_terminate_timeout">0s</value>   

  默認(rèn)值為 0 秒,也就是說,PHP 腳本會一直執(zhí)行下去。這樣,當(dāng)所有的 php-cgi 進(jìn)程都卡在 file_get_contents() 函數(shù)時(shí),這臺 Nginx+PHP 的 WebServer 已經(jīng)無法再處理新的 PHP 請求了,Nginx 將給用戶返回“502 Bad Gateway”。修改該參數(shù),設(shè)置一個(gè) PHP 腳本最大執(zhí)行時(shí)間是必要的,但是,治標(biāo)不治本。例如改成 30s,如果發(fā)生 file_get_contents() 獲取網(wǎng)頁內(nèi)容較慢的情況,這就意味著 150 個(gè) php-cgi 進(jìn)程,每秒鐘只能處理 5 個(gè)請求,WebServer 同樣很難避免“502 Bad Gateway”。

  要做到徹底解決,只能讓 PHP 程序員們改掉直接使用 file_get_contents("http://example.com/") 的習(xí)慣,而是稍微修改一下,加個(gè)超時(shí)時(shí)間,用以下方式來實(shí)現(xiàn) HTTP GET 請求。要是覺得麻煩,可以自行將以下代碼封裝成一個(gè)函數(shù)。

  1. <?php    
  2. $ctx = stream_context_create(array(    
  3.    'http' => array(    
  4.        'timeout' => 1 //設(shè)置一個(gè)超時(shí)時(shí)間,單位為秒    
  5.        )    
  6.    )    
  7. );    
  8. file_get_contents("http://example.com/", 0, $ctx);    
  9. ?>   

  當(dāng)然,導(dǎo)致 php-cgi 進(jìn)程 CPU 100% 的原因不只有這一種,那么,怎么確定是 file_get_contents() 函數(shù)導(dǎo)致的呢?

  首先,使用 top 命令查看 CPU 使用率較高的 php-cgi 進(jìn)程。

  1. top - 10:34:18 up 724 days, 21:01,  3 users,  load average: 17.86, 11.16, 7.69 
  2. Tasks: 561 total,  15 running, 546 sleeping,   0 stopped,   0 zombie 
  3. Cpu(s):  5.9%us,  4.2%sy,  0.0%ni, 89.4%id,  0.2%wa,  0.0%hi,  0.2%si,  0.0%st 
  4. Mem:   8100996k total,  4320108k used,  3780888k free,   772572k buffers 
  5. Swap:  8193108k total,    50776k used,  8142332k free,   412088k cached 
  6.   PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                            
  7. 10747 www       18   0  360m  22m  12m R 100.6 0.3    0:02.60 php-cgi                                                            
  8. 10709 www       16   0  359m  28m  17m R 96.8  0.4    0:11.34 php-cgi                                                            
  9. 10745 www       18   0  360m  24m  14m R 94.8  0.3    0:39.51 php-cgi                                                            
  10. 10707 www       18   0  360m  25m  14m S 77.4  0.3    0:33.48 php-cgi                                                            
  11. 10782 www       20   0  360m  26m  15m R 75.5  0.3    0:10.93 php-cgi                                                            
  12. 10708 www       25   0  360m  22m  12m R 69.7  0.3    0:45.16 php-cgi                                                            
  13. 10683 www       25   0  362m  28m  15m R 54.2  0.4    0:32.65 php-cgi                                                            
  14. 10711 www       25   0  360m  25m  15m R 52.2  0.3    0:44.25 php-cgi                                                            
  15. 10688 www       25   0  359m  25m  15m R 38.7  0.3    0:10.44 php-cgi                                                            
  16. 10719 www       25   0  360m  26m  16m R  7.7  0.3    0:40.59 php-cgi 

  找其中一個(gè) CPU 100% 的 php-cgi 進(jìn)程的 PID,用以下命令跟蹤一下:

  1. strace -p 10747 

  如果屏幕顯示:

  1. select(7, [6], [6], [], {15, 0})        = 1 (out [6], left {15, 0}) 
  2. poll([{fd=6events=POLLIN}], 1, 0)     = 0 (Timeout) 
  3. select(7, [6], [6], [], {15, 0})        = 1 (out [6], left {15, 0}) 
  4. poll([{fd=6events=POLLIN}], 1, 0)     = 0 (Timeout) 
  5. select(7, [6], [6], [], {15, 0})        = 1 (out [6], left {15, 0}) 
  6. poll([{fd=6events=POLLIN}], 1, 0)     = 0 (Timeout) 
  7. select(7, [6], [6], [], {15, 0})        = 1 (out [6], left {15, 0}) 
  8. poll([{fd=6events=POLLIN}], 1, 0)     = 0 (Timeout) 
  9. select(7, [6], [6], [], {15, 0})        = 1 (out [6], left {15, 0}) 
  10. poll([{fd=6events=POLLIN}], 1, 0)     = 0 (Timeout) 
  11. select(7, [6], [6], [], {15, 0})        = 1 (out [6], left {15, 0}) 
  12. poll([{fd=6events=POLLIN}], 1, 0)     = 0 (Timeout) 
  13. select(7, [6], [6], [], {15, 0})        = 1 (out [6], left {15, 0}) 
  14. poll([{fd=6events=POLLIN}], 1, 0)     = 0 (Timeout) 
  15. select(7, [6], [6], [], {15, 0})        = 1 (out [6], left {15, 0}) 
  16. poll([{fd=6events=POLLIN}], 1, 0)     = 0 (Timeout) 
  17. select(7, [6], [6], [], {15, 0})        = 1 (out [6], left {15, 0}) 
  18. poll([{fd=6events=POLLIN}], 1, 0)     = 0 (Timeout) 
  19. select(7, [6], [6], [], {15, 0})        = 1 (out [6], left {15, 0}) 
  20. poll([{fd=6events=POLLIN}], 1, 0)     = 0 (Timeout) 

  那么,就可以確定是 file_get_contents() 導(dǎo)致的問題了。

來源聲明:本文章系尚品中國編輯原創(chuàng)或采編整理,如需轉(zhuǎn)載請注明來自尚品中國。以上內(nèi)容部分(包含圖片、文字)來源于網(wǎng)絡(luò),如有侵權(quán),請及時(shí)與本站聯(lián)系(010-60259772)。
TAG標(biāo)簽:

如果您的網(wǎng)站可以增加轉(zhuǎn)化次數(shù)并提高客戶滿意度,該怎么辦?

預(yù)約專業(yè)咨詢顧問溝通!

*尚品專業(yè)顧問將盡快與您聯(lián)系

免責(zé)聲明

非常感謝您訪問我們的網(wǎng)站。在您使用本網(wǎng)站之前,請您仔細(xì)閱讀本聲明的所有條款。

1、本站部分內(nèi)容來源自網(wǎng)絡(luò),涉及到的部分文章和圖片版權(quán)屬于原作者,本站轉(zhuǎn)載僅供大家學(xué)習(xí)和交流,切勿用于任何商業(yè)活動。

2、本站不承擔(dān)用戶因使用這些資源對自己和他人造成任何形式的損失或傷害。

3、本聲明未涉及的問題參見國家有關(guān)法律法規(guī),當(dāng)本聲明與國家法律法規(guī)沖突時(shí),以國家法律法規(guī)為準(zhǔn)。

4、如果侵害了您的合法權(quán)益,請您及時(shí)與我們,我們會在第一時(shí)間刪除相關(guān)內(nèi)容!

聯(lián)系方式:010-60259772
電子郵件:394588593@qq.com

免責(zé)聲明

非常感謝您訪問我們的網(wǎng)站。在您使用本網(wǎng)站之前,請您仔細(xì)閱讀本聲明的所有條款。

1、本站部分內(nèi)容來源自網(wǎng)絡(luò),涉及到的部分文章和圖片版權(quán)屬于原作者,本站轉(zhuǎn)載僅供大家學(xué)習(xí)和交流,切勿用于任何商業(yè)活動。

2、本站不承擔(dān)用戶因使用這些資源對自己和他人造成任何形式的損失或傷害。

3、本聲明未涉及的問題參見國家有關(guān)法律法規(guī),當(dāng)本聲明與國家法律法規(guī)沖突時(shí),以國家法律法規(guī)為準(zhǔn)。

4、如果侵害了您的合法權(quán)益,請您及時(shí)與我們,我們會在第一時(shí)間刪除相關(guān)內(nèi)容!

聯(lián)系方式:010-60259772
電子郵件:394588593@qq.com

主站蜘蛛池模板: 久久不卡国产精品无码 国产欧美日本亚洲精品一5区 东京热无码中文字幕av专区 亚洲h精品动漫在线观看 一本一久本久a久久精品综合 欧美videos另类极品 久久精品国产只有精品2020 免费无码va一区二区三区 国产精品自在线拍国产电影 精品国产自在现线电影 精品午夜国产福利观看 中文字幕不卡av无码专线一本 樱花草在线社区www中国中文 亚洲欧洲日产国码在线 玩弄人妻少妇精品视频 九九热爱视频精品视频 久久不见久久见免费影院 日本熟妇中文字幕三级 国产日韩在线视看第一页 中文无码高潮到痉挛在线视频 国产午夜片无码区在线观看爱情网 国产亚洲日韩av在线播放不卡 免费国产乱理伦片在线观看 国产福利永久在线视频无毒不卡 欧美videos另类极品 四虎成人欧美精品在永久在线 国内精品伊人久久久久av一坑 97人摸人人澡人人人超一碰 久久99国产只有精品 久播影院无码中文字幕 国产精品午睡沙发系列| 亚洲色成人一区二区三区| 99久久er热在这里只有精品99| 久艾草久久综合精品无码| 四虎成人精品在永久在线| 亚洲一卡2卡新区国色天香| 麻豆亚洲国产成人精品无码区| 国产99视频精品专区| 欧美综合精品久久久久成人影院 | 最新精品国偷自产在线下载| 97久久精品无码一区二区天美 |