linux定位系統異常負載故障思路

科技小能手發表於2017-11-12
定位系統異常負載故障思路:

top看程式的id號

舉例php-cgi
經過上圖,我們發現,有兩個php-cgi程式的cpu資源佔用率過高,pid分別是10059,11570,這一般都是程式優化不夠造成,如何定位問題的php程式位置?
2. 找出程式所使用的檔案
/proc/檔案系統儲存在記憶體中,主要儲存系統的狀態,關鍵配置等等,而/proc/目錄下有很多數字目錄,就是程式的相關資訊,如下圖,我們看看程式10059正在使用哪些檔案?
顯然,使用了/home/tmp/sess_*檔案,這明顯是PHP的session檔案, 我們檢視這個session檔案的內容為:view_time|123333312412
 
到這裡,我們已經可以懷疑是由於php程式寫入一個叫view_time的session項而引起, 那麼剩餘的事件就是檢查包含view_time的所有php檔案,然後修改之(比如改用COOKIE),這實話, 這個view_time並非敏感資料,僅僅記錄使用者最後訪問時間,實在沒必要使用代價巨大的session, 而應該使用cookie。
3. 找出有問題的程式,修改之
使用vi編輯以下shell程式(假設網站程式位於/www目錄下)
 
 #!/bin/bash

 find /www/ -name “*.php” > list.txt

 

f=`cat ./list.txt`

 

for n in $f

do  

    r=`egrep `view_time` $n`

    if [ ! “$r” = “” ] ; then

        echo $n

     fi  

done
 
執行這個shell程式,將輸出包含有view_time的檔案, 對記事狗微博系統,產生的問題位於modules/topic.mod.class檔案中
本文轉自 liang3391 51CTO部落格,原文連結:http://blog.51cto.com/liang3391/668012


相關文章