婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > PHP實現通過strace定位故障原因的方法

PHP實現通過strace定位故障原因的方法

熱門標簽:遼寧ai電銷機器人價格 上海做外呼線路的通信公司 寧波外呼營銷系統 地圖標注專員怎么樣 電話機器人銷售主要負責什么 長沙做地圖標注公司 福建銀行智能外呼系統價格 房產中介用的是什么外呼系統 四川保險智能外呼系統供應商

本文實例講述了PHP實現通過strace定位故障原因的方法。分享給大家供大家參考,具體如下:

俗話說:不怕賊偷,就怕賊惦記著。在面對故障的時候,我也有類似的感覺:不怕出故障,就怕你不知道故障的原因,故障卻隔三差五的找上門來。

十一長假還沒結束,服務器卻頻現高負載,Nginx出現錯誤日志:

connect() failed (110: Connection timed out) while connecting to upstream
connect() failed (111: Connection refused) while connecting to upstream

看上去是Upstream出了問題,在本例中Upstream就是PHP(版本:5.2.5)。可惜監控不完善,我搞不清楚到底是哪出了問題,無奈之下只好不斷重啟PHP來緩解故障。

如果每次都手動重啟服務無疑是個苦差事,幸運的是可以通過CRON設置每分鐘執行:

#/bin/bash
LOAD=$(awk '{print $1}' /proc/loadavg)
if [ $(echo "$LOAD > 100" | bc) = 1 ]; then
  /etc/init.d/php-fpm restart
fi

可惜這只是一個權宜之計,要想徹底解決就必須找出故障的真正原因是什么。

閑言碎語不要講,輪到Strace出場了,統計一下各個系統調用的耗時情況:

shell> strace -c -p $(pgrep -n php-cgi)
% time   seconds usecs/call   calls  errors syscall
------ ----------- ----------- --------- --------- ----------------
 30.53  0.023554     132    179      brk
 14.71  0.011350     140    81      mlock
 12.70  0.009798     15    658    16 recvfrom
 8.96  0.006910      7    927      read
 6.61  0.005097     43    119      accept
 5.57  0.004294      4    977      poll
 3.13  0.002415      7    359      write
 2.82  0.002177      7    311      sendto
 2.64  0.002033      2   1201     1 stat
 2.27  0.001750      1   2312      gettimeofday
 2.11  0.001626      1   1428      rt_sigaction
 1.55  0.001199      2    730      fstat
 1.29  0.000998     10    100    100 connect
 1.03  0.000792      4    178      shutdown
 1.00  0.000773      2    492      open
 0.93  0.000720      1    711      close
 0.49  0.000381      2    238      chdir
 0.35  0.000271      3    87      select
 0.29  0.000224      1    357      setitimer
 0.21  0.000159      2    81      munlock
 0.17  0.000133      2    88      getsockopt
 0.14  0.000110      1    149      lseek
 0.14  0.000106      1    121      mmap
 0.11  0.000086      1    121      munmap
 0.09  0.000072      0    238      rt_sigprocmask
 0.08  0.000063      4    17      lstat
 0.07  0.000054      0    313      uname
 0.00  0.000000      0    15     1 access
 0.00  0.000000      0    100      socket
 0.00  0.000000      0    101      setsockopt
 0.00  0.000000      0    277      fcntl
------ ----------- ----------- --------- --------- ----------------
100.00  0.077145         13066    118 total

看上去「brk」非常可疑,它竟然耗費了三成的時間,保險起見,單獨確認一下:

shell> strace -T -e brk -p $(pgrep -n php-cgi)
brk(0x1f18000) = 0x1f18000 0.024025>
brk(0x1f58000) = 0x1f58000 0.015503>
brk(0x1f98000) = 0x1f98000 0.013037>
brk(0x1fd8000) = 0x1fd8000 0.000056>
brk(0x2018000) = 0x2018000 0.012635>

說明:在Strace中和操作花費時間相關的選項有兩個,分別是「-r」和「-T」,它們的差別是「-r」表示相對時間,而「-T」表示絕對時間。 簡單統計可以用「-r」,但是需要注意的是在多任務背景下,CPU隨時可能會被切換出去做別的事情,所以相對時間不一定準確,此時最好使用「-T」,在行 尾可以看到操作時間,可以發現確實很慢。

在繼續定位故障原因前,我們先通過「man brk」來查詢一下它的含義:

brk() sets the end of the data segment to the value specified by end_data_segment, when that value is reasonable, the system does have enough memory and the process does not exceed its max data size (see setrlimit(2)).

簡單點說就是內存不夠用時通過它來申請新內存(data segment),可是為什么呢?

shell> strace -T -p $(pgrep -n php-cgi) 2>1 | grep -B 10 brk
stat("/path/to/script.php", {...}) = 0 0.000064>
brk(0x1d9a000) = 0x1d9a000 0.000067>
brk(0x1dda000) = 0x1dda000 0.001134>
brk(0x1e1a000) = 0x1e1a000 0.000065>
brk(0x1e5a000) = 0x1e5a000 0.012396>
brk(0x1e9a000) = 0x1e9a000 0.000092>

通過「grep」我們很方便就能獲取相關的上下文,反復運行幾次,發現每當請求某些PHP腳本時,就會出現若干條耗時的「brk」,而且這些PHP 腳本有一個共同的特點,就是非常大,甚至有幾百K,為何會出現這么大的PHP腳本?實際上是程序員為了避免數據庫操作,把非常龐大的數組變量通過「var_export」持久化到PHP文件中,然后在程序中通過「include」來獲取相應的變量,因為變量太大,所以PHP不得不頻繁執行「brk」,不幸的是在本例的環境中,此操作比較慢,從而導致處理請求的時間過長,加之PHP進程數有限,于是乎在Nginx上造成請求擁堵,最終導致高負載故障。

下面需要驗證一下推斷似乎否正確,首先查詢一下有哪些地方涉及問題腳本:

shell> find /path -name "*.php" | xargs grep "script.php"

直接把它們都禁用了,看看服務器是否能緩過來,或許大家覺得這太魯蒙了,但是特殊情況必須做出特殊的決定,不能像個娘們兒似的優柔寡斷,沒過多久,服務器負載恢復正常,接著再統計一下系統調用的耗時:

shell> strace -c -p $(pgrep -n php-cgi)
% time   seconds usecs/call   calls  errors syscall
------ ----------- ----------- --------- --------- ----------------
 24.50  0.001521     11    138     2 recvfrom
 16.11  0.001000     33    30      accept
 7.86  0.000488      8    59      sendto
 7.35  0.000456      1    360      rt_sigaction
 6.73  0.000418      2    198      poll
 5.72  0.000355      1    285      stat
 4.54  0.000282      0    573      gettimeofday
 4.41  0.000274      7    42      shutdown
 4.40  0.000273      2    137      open
 3.72  0.000231      1    197      fstat
 2.93  0.000182      1    187      close
 2.56  0.000159      2    90      setitimer
 2.13  0.000132      1    244      read
 1.71  0.000106      4    30      munmap
 1.16  0.000072      1    60      chdir
 1.13  0.000070      4    18      setsockopt
 1.05  0.000065      1    100      write
 1.05  0.000065      1    64      lseek
 0.95  0.000059      1    75      uname
 0.00  0.000000      0    30      mmap
 0.00  0.000000      0    60      rt_sigprocmask
 0.00  0.000000      0     3     2 access
 0.00  0.000000      0     9      select
 0.00  0.000000      0    20      socket
 0.00  0.000000      0    20    20 connect
 0.00  0.000000      0    18      getsockopt
 0.00  0.000000      0    54      fcntl
 0.00  0.000000      0     9      mlock
 0.00  0.000000      0     9      munlock
------ ----------- ----------- --------- --------- ----------------
100.00  0.006208         3119    24 total

顯而易見,「brk」已經不見了,取而代之的是「recvfrom」和「accept」,不過這些操作本來就是很耗時的,所以可以定位「brk」就是故障的原因。

擁抱故障,每一次故障都是歷練。正所謂:天將降大任于斯人也,必先苦其心志,勞其筋骨,餓其體膚,空乏其身,行拂亂其所為,所以動心忍性,增益其所不能。

更多關于PHP相關內容感興趣的讀者可查看本站專題:《PHP錯誤與異常處理方法總結》、《php字符串(string)用法總結》、《PHP數組(Array)操作技巧大全》、《PHP運算與運算符用法總結》、《PHP網絡編程技巧總結》、《PHP基本語法入門教程》及《php面向對象程序設計入門教程》

希望本文所述對大家PHP程序設計有所幫助。

您可能感興趣的文章:
  • php+redis在實際項目中HTTP 500: Internal Server Error故障排除
  • IIS下PHP運行環境搭建與網頁服務器故障排查方法
  • IIS PHP環境Temp文件夾的權限問題引起的網站故障
  • 基于PHP7錯誤處理與異常處理方法(詳解)
  • phpStudy配置多站點多域名方法及遇到的403錯誤解決方法
  • PHP中常見的錯誤與異常處理總結大全
  • php實現的錯誤處理封裝類實例
  • 淺談PHP錯誤類型及屏蔽方法
  • php中的異常和錯誤淺析
  • PHP中Notice錯誤常見解決方法

標簽:澳門 常德 工商登記 佛山 宿遷 宜春 深圳 延安

巨人網絡通訊聲明:本文標題《PHP實現通過strace定位故障原因的方法》,本文關鍵詞  PHP,實現,通過,strace,定位,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《PHP實現通過strace定位故障原因的方法》相關的同類信息!
  • 本頁收集關于PHP實現通過strace定位故障原因的方法的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    蜜桃一区二区三区在线| 日韩不卡免费视频| 欧美影院精品一区| 国内外成人在线| 青青草原综合久久大伊人精品优势| 欧美激情一区二区三区不卡 | 免费成人美女在线观看.| 国产成人av电影在线| 中文字幕精品三区| 精品免费日韩av| 欧美日韩成人综合在线一区二区| 成人av电影在线播放| 国产伦精品一区二区三区视频青涩 | 国产精品久久三区| 欧美一区二区三区系列电影| 91一区二区三区在线观看| 国产精品美女久久久久高潮| 欧美狂野另类xxxxoooo| 欧美日韩精品一区二区在线播放| 成人av一区二区三区| 国产精品性做久久久久久| 国产麻豆91精品| 国产成人丝袜美腿| 99亚偷拍自图区亚洲| 91久久一区二区| 91亚洲国产成人精品一区二区三| 91福利国产成人精品照片| 91高清在线观看| 3d动漫精品啪啪一区二区竹菊| 91精品中文字幕一区二区三区| 精品免费一区二区三区| 亚洲精品一区二区精华| 菠萝蜜视频在线观看一区| 国产1区2区3区精品美女| 99久精品国产| 欧美日韩国产经典色站一区二区三区| 99国产精品国产精品毛片| 国产伦精品一区二区三区免费| av在线播放不卡| 欧美性色黄大片手机版| 欧美久久免费观看| 激情文学综合丁香| 色噜噜狠狠一区二区三区果冻| 欧美色精品在线视频| 91精品国产免费久久综合| 欧美色大人视频| 国产精品国产精品国产专区不片| 亚洲综合色自拍一区| 国产精品18久久久| 日韩一区二区在线播放| 一区二区三区四区亚洲| 成人午夜激情在线| 欧美极品另类videosde| 久久精品国产一区二区三 | 国产嫩草影院久久久久| 亚洲成人资源网| 色综合色综合色综合| 精品久久久久久无| 久久精品噜噜噜成人av农村| 91丨九色丨黑人外教| 欧美手机在线视频| 亚洲精品菠萝久久久久久久| 欧美在线一区二区| 国产精品第一页第二页第三页| 久久99国产乱子伦精品免费| 91麻豆精品国产自产在线| 人人狠狠综合久久亚洲| 欧美午夜精品一区二区三区| 日韩毛片精品高清免费| 欧洲在线/亚洲| 日韩精品亚洲专区| 日韩精品一区在线| 黄一区二区三区| 久久久久久亚洲综合影院红桃 | 午夜不卡av在线| 日韩精品中文字幕在线不卡尤物| 精品一区二区免费视频| 久久这里都是精品| 成人爱爱电影网址| 亚洲成人1区2区| 国产日韩综合av| 欧美日韩在线观看一区二区| 另类综合日韩欧美亚洲| 国产精品夫妻自拍| 91丨九色丨蝌蚪丨老版| 国产综合一区二区| 国产精品亚洲一区二区三区妖精 | 日韩精品一二三四| 91美女在线看| 精品在线视频一区| 国产精品欧美经典| 日韩一区二区三区在线| 成人久久久精品乱码一区二区三区| 亚洲日本在线看| 日韩视频不卡中文| 欧美日韩国产中文| 成人av资源下载| 国产一区二区成人久久免费影院 | 日韩精品电影在线| 国产精品欧美久久久久无广告 | 亚洲国产aⅴ天堂久久| 国产偷国产偷精品高清尤物| 欧美日韩精品一区二区三区四区| 成人h动漫精品一区二| 国产夫妻精品视频| 蜜臀av亚洲一区中文字幕| 亚洲综合成人在线视频| 亚洲色图都市小说| 国产精品久久久一本精品| 精品国产免费一区二区三区香蕉| 337p亚洲精品色噜噜| 色婷婷av一区二区| 欧洲国内综合视频| 一区二区三区欧美久久| 亚洲日本va午夜在线电影| 成人免费在线视频观看| 自拍偷拍亚洲综合| 亚洲综合在线第一页| 久久综合九色综合久久久精品综合| 国产精品亚洲一区二区三区在线| 狠狠色狠狠色合久久伊人| 国产成人精品免费在线| jlzzjlzz亚洲日本少妇| 欧美性一二三区| 日韩欧美亚洲一区二区| 日韩欧美电影在线| 国产精品久久久久aaaa| 日精品一区二区三区| 国产精品一区二区在线观看网站| 国产麻豆成人传媒免费观看| 日本久久精品电影| 精品国产麻豆免费人成网站| 2020国产成人综合网| 国产精品国产三级国产aⅴ无密码 国产精品国产三级国产aⅴ原创 | 亚洲一本大道在线| 国产成人高清在线| 欧美精品v国产精品v日韩精品| 久久综合av免费| 天堂影院一区二区| 91亚洲精品乱码久久久久久蜜桃| 欧美一区二视频| 中文字幕一区不卡| 国内精品视频一区二区三区八戒| 91视频国产观看| 亚洲国产成人在线| 国产精品综合一区二区三区| 欧美另类变人与禽xxxxx| 亚洲天堂网中文字| 国产综合色视频| 欧美一级欧美一级在线播放| 欧美国产日韩一二三区| 久久色视频免费观看| 日本免费新一区视频| 欧美日韩国产另类不卡| 奇米888四色在线精品| 欧美日韩国产综合视频在线观看| 夜夜嗨av一区二区三区中文字幕 | 精品国产123| 国产真实乱子伦精品视频| 久久久影院官网| 国产99久久久国产精品潘金| 国产亚洲欧美日韩在线一区| 国内精品写真在线观看| 久久久美女毛片| 99精品国产99久久久久久白柏| 国产精品理论在线观看| 色综合久久88色综合天天| 亚洲一区二区偷拍精品| 欧美色区777第一页| 天堂一区二区在线| 精品久久久久久久久久久久久久久久久| 亚洲精品免费在线播放| 91免费国产在线观看| 亚洲欧洲成人av每日更新| 欧美xxxx老人做受| 麻豆成人久久精品二区三区小说| 88在线观看91蜜桃国自产| 性做久久久久久免费观看| 色综合天天天天做夜夜夜夜做| 国产欧美日韩久久| 日本道免费精品一区二区三区| 亚洲成人在线网站| 欧美一区三区四区| 国产成人亚洲综合a∨婷婷 | 日本欧洲一区二区| 亚洲精品在线免费播放| 粉嫩高潮美女一区二区三区| 中文字幕五月欧美| 奇米四色…亚洲| 国产婷婷色一区二区三区| 成人爽a毛片一区二区免费| 亚洲视频一区二区在线观看| 欧美日韩国产系列| 国产一区二区三区av电影| 亚洲欧洲制服丝袜| 精品国产污污免费网站入口| 欧美在线你懂得| 国产成人丝袜美腿| 日韩高清在线观看| 一区二区三区欧美视频|