php-fpm服務掛掉


今天發了個鏈接,可能同時在線的人瞬間比較多,結果網站報503錯誤,回去打開php-fpm錯誤日志一看,php-fpm服務掛掉了,報如下錯誤:

[04-Apr-2016 15:38:04] NOTICE: systemdmonitorintervalsetto 10000ms [05-Apr-2016 19:03:08] WARNING: [poolwww] seemsbusy (youmayneedto increasepm.start_servers, or pm.min/max_spare_servers), spawning 8 children, thereare 0 idle, and 29 totalchildren [05-Apr-2016 19:03:09] WARNING: [poolwww] seemsbusy (youmayneedto increasepm.start_servers, or pm.min/max_spare_servers), spawning 16 children, thereare 0 idle, and 34 totalchildren [05-Apr-2016 19:03:11] WARNING: [poolwww] seemsbusy (youmayneedto increasepm.start_servers, or pm.min/max_spare_servers), spawning 32 children, thereare 0 idle, and 39 totalchildren [05-Apr-2016 19:03:12] WARNING: [poolwww] seemsbusy (youmayneedto increasepm.start_servers, or pm.min/max_spare_servers), spawning 32 children, thereare 0 idle, and 44 totalchildren [05-Apr-2016 19:03:13] WARNING: [poolwww] seemsbusy (youmayneedto increasepm.start_servers, or pm.min/max_spare_servers), spawning 32 children, thereare 0 idle, and 49 totalchildren [05-Apr-2016 19:03:14] WARNING: [poolwww] serverreachedpm.max_children setting (50), considerraisingit 

錯誤提示建議增加pm.start_servers數量,打開我的php-fpm配置:

pm.max_children = 50
 
; Thenumberofchild processescreatedonstartup.
; Note: Usedonlywhenpmis setto 'dynamic' ; Default Value: min_spare_servers + (max_spare_servers - min_spare_servers) / 2 pm.start_servers = 15   ; Thedesiredminimumnumberofidleserverprocesses. ; Note: Usedonlywhenpmis setto 'dynamic' ; Note: Mandatorywhenpmis setto 'dynamic' pm.min_spare_servers = 5   ; Thedesiredmaximumnumberofidleserverprocesses. ; Note: Usedonlywhenpmis setto 'dynamic' ; Note: Mandatorywhenpmis setto 'dynamic' pm.max_spare_servers = 35 

這里pm.start_servers之前我設置為5,注意配置文件也說明start_servers的值默認是max_spare_servers-min_spare_servers的一半。(ps:具體的值要根據服務器配置情況和壓力測試得出)

網站服務器是阿里雲1G帶寬,1G內存,1核CPU配置,關鍵還在一台機子上裝了數據庫,redis各種服務。

幾個php-fpm重要參數說明

pm.max_children = 24

static模式下創建的子進程數或dynamic模式下同一時刻允許最大的php-fpm子進程數量

pm.start_servers = 16

動態方式下的起始php-fpm進程數量

pm.min_spare_servers = 12

動態方式下服務器空閑時最小php-fpm進程數量

pm.max_spare_servers = 24

動態方式下服務器空閑時最大php-fpm進程數量

經驗人士的總結:

一般php-fpm進程占用20~30m左右的內存就按30m算。如果單獨跑php-fpm,動態方式起始值可設置物理內存Mem/30M,由於大家一般Nginx、MySQL都在一台機器上,於是預留一半給它們,即php-fpm進程數為$Mem/2/30。

調整之后的幾個值是:

pm = dynamic
pm.max_children = 50
pm.start_servers = 15
pm.min_spare_servers = 10
pm.max_spare_servers = 40

重啟php-fpm服務:service php70-php-fpm reload,繼續使用top命令查看內存使用情況,發現十幾個php-fpm啟動。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM