在最近開發中,發現打開網頁愈來愈慢,因此用用top命令發現,php-fpm CPU 飆到了90%以上,因此須要緊急處理這個問題,
主要解決思路以下:php
- 1.設置控制php-fpm進程池進程數量。
修改pm.max_children的數量,根據內存來進行分配,系統開一個進程20-30M。好比系統內存1G,那就將差很少能開30個進程,因此能夠設置pm.max_children 爲30,以此類推,而後須要重啓下php-fpm服務。
pm.max_children:靜態方式下開啓的php-fpm進程數量。
pm.start_servers:動態方式下的起始php-fpm進程數量。
pm.min_spare_servers:動態方式下的最小php-fpm進程數量。
pm.max_spare_servers:動態方式下的最大php-fpm進程數量。服務器
- 2.開啓慢日誌。
編輯php-fpm.conf文件找到request_slowlog_timeout = 0這一行,默認值爲0,表示不開啓slowlog,將其值改成3s,表示跟蹤執行時間達到或超過3s的腳本。找到slowlog,它的值表示慢執行日誌的路徑。
- 3.內存分配。
內存分配太少,理論上開一個進程消耗CPU 20-30M,因此1G內存的能夠開30個進程左右,若是是虛擬機的話能夠分配2G內存。
- 4.編輯php-fpm.conf配置文件。
php_admin_value[memory_limit] = 128M(我服務器上的配置文件在/etc/php5/fpm/pool.d/www.conf 這個文件是被包含在php-fpm.conf裏的) 後邊的數字能夠隨便更改:32M,64M,128M,256M,512M,這個設置可根據你的服務器內存大小和你的需求來寫,修改後要加載一下php-fpm服務。
歡迎補充!ide