具體現象有:
- CPU占用高:使用
top
命令觀察到CPU用戶態占用特別高,長時間70%以上。 - php-fpm進程多:使用
top
命令觀察到php-fpm進程特別多。使用wc
統計到有160+個進程。 - 等待線程多:使用
top
命令觀察到等待進程高達8+。
處理思路:
- 降低php-fpm進程數:通過調整
php-fpm.conf
配置文件中pm.max_children
字段,重啟php-fpm
并未見明顯降低CPU占用率。 - 添加
access
日志:在php-fpm.conf
配置文件添加中access.log = /XXX/access.$pool.log
、access.format = "%R - %u %t \"%m %r%Q%q\" %s %f %{mili}d %{kilo}M %C%%"
,觀察日志,發現有一個接口訪問量特別大,并且狀態是404。預計就是這里出了問題。
處理結果:
在nginx上將這個api接口丟棄掉(經過討論,該接口已經處于廢棄狀態),發現CPU占用恢復正常。
總結:
php-fpm
貌似使用cgi
技術,fork
時會比較消耗資源,后來在nginx
上丟棄效率就要高得多
作者:jinelei
鏈接:https://www.jianshu.com/p/3094d3bf8717
來源:簡書
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。