![取得 502 Bad Gateway,php-fpm 佔用 100% cpu](https://rvso.com/image/668053/%E5%8F%96%E5%BE%97%20502%20Bad%20Gateway%EF%BC%8Cphp-fpm%20%E4%BD%94%E7%94%A8%20100%25%20cpu.png)
好吧,昨晚,凌晨 2 點左右,我的一台伺服器的 CPU 使用率達到了 100%。今天早上檢查時,我看到 5 個 php-fpm 進程一起佔用了大約 100% 的 cpu。我已經重新啟動了伺服器,但是每次伺服器回來時,php-fpm 進程都會重新啟動並佔用 100% 的 cpu。
它是 Ubuntu 14.04.3 LTS (GNU/Linux 3.13.0-32-generic x86_64) 伺服器,我已經更新了所有軟體,但我無法獲得任何導致此問題的資訊。
顯然,該問題會導致伺服器上託管的網站離線,並且始終顯示 502 Bad Gateway 或 504 Gateway Time-out 錯誤...
我希望有人可以提供一些幫助來解決這個問題。
我還有另外 3 台伺服器,它們的設定完全相同,但沒有任何這些問題。
編輯1: 當我查看 NewRelic 時,它向我顯示,大約在問題開始的同時,網路選項卡中的「每秒資料包數」大幅增加,這一定與問題有關...
答案1
我在使用 PHP-FPM 時遇到了類似的問題,即使在流量較少的夜間,它也佔用 100% CPU。
您必須對 PHP-FPM 設定檔進行一些最佳化。確保您有此條目:-
pm = 按需 pm.max_children = 2 pm.start_servers = 2 pm.min_spare_servers = 1 pm.max_spare_servers = 3
如果不是 ondemand,則變更為 ondemand,否則 PHP-FPM 將嘗試佔用大量 CPU 資源。使用 ondemand ,它將在需要時啟動更多進程。
PHP-FPM 的設定檔位於:-
/etc/php5/fpm/php-fpm.conf
在 pool.d/www.conf 中也配置了一個池。
檢查這兩個文件中的條目並相應地優化上述設置,然後重新啟動 PHP-FPM。