PHP CGI程序占用過多CPU

2022-06-29 09:48:12 字數 867 閱讀 8631

一般情況下,php-cgi只在使用者訪問的時候會占用cpu資源,但是最近有同事反映,伺服器上的的php-cgi程序占用了非常多的cpu,但是訪問流量卻非常少。這顯然是乙個不正常的現象,說有些地方存在故障。以下導致此問題可能存在的原因,在此與大家分享。

1. 相容性問題

如果php的擴充套件與php版本相容存在問題,已經有反映過類似的案例, eaccelerater與某些php版本相容存在問題,具體表現時啟動php-cgi程序後,

執行10多分鐘,奇慢無比,但靜態資源訪問很快,伺服器負載也很正常(這說明伺服器解析功能的nginx是沒有問題,而是php-cgi程序的問題)。

解決辦法

從php.ini中禁止掉eaccelerater模組,再重啟php-cgi程序即可。

2. 程式中可能存在死迴圈

如果程式中存在死迴圈,則一定導致伺服器負載超高(使用top指令檢視負載高達100+)。

解決辦法

借助linux的proc虛擬檔案系統找到具體的問題程式。

3. php程式不合理使用session

在查閱的資料中有看到,這個發生在開源微博記事狗程式上,具體表現是有少量php-cgi程序(不超過10個)的cpu使用率達98%以上,

伺服器負載在4-8之間,

解決辦法

需要借助linux的proc檔案系統找出原因。

4. 程式中存在過度耗時且不可能完成的操作

如果是這樣的話,是因為程式本身在編寫的時候,就寫的不夠規範。需要與軟體的設計者以及程式設計工程師共同解決。

PHP CGI程序占用過多CPU

一般情況下,php cgi只在使用者訪問的時候會占用cpu資源,但是最近有同事反映,伺服器上的的php cgi程序占用了非常多的cpu,但是訪問流量卻非常少。這顯然是乙個不正常的現象,說有些地方存在故障。以下導致此問題可能存在的原因,在此與大家分享。1.相容性問題 如果php的擴充套件與php版本相...

linux 分析 程序cpu占用過高

重點是檢視程序的執行緒中,哪個執行緒占用cpu過高,然後用gdb附加到程序,除錯執行緒,看是否有死迴圈或者死鎖等問題,步驟如下 先用ps grep找出該死的程序pid,比如 1706 1.gdb attach 到程序號碼 1706 2.仍然在gdb中 info threads 結果大致如下 gdb ...

解決win7下svchost程序占用過多CPU資源

安轉原版的win7 64bit系統,開機一段時間後發現cpu風扇一直工作,開啟任務管理器,找到如下程序 svchost.exe,然後右鍵轉到服務,有如下幾項。這是windows update的影響,比較簡單的解決辦法 先結束程序樹,cpu溫度隨之降下來了,找到目錄 c windows softwar...