WARNING: [pool www] server reached pm.max_children setting (5), consider raising it
首先排查nginx 发现错误日志提示:
2018/05/29 23:17:57 [error] 13856#13856: *150 upstream timed out (110: Connection timed out) while reading response header from upstream, client: 182.xx.xx.xx, server: pcds.yxxxxxx.com,
然后修改nginx超时时间, 并没有用.
然后查看php-fpm日志
WARNING: [pool www] server reached pm.max_children setting (5), consider raising it
看样子好像是max_children设置太小了, 网上查的
pm.max_children = 30 //设置子进程最大数值
举例:每个php-fpm子进程占用20M内存,服务器的内存是1G,除去系统中其他应用占用的内存,假如为300M,剩余700M,700/20 = 35,最多设置35,可以取值稍微低一些为30。
与此同时我们还要调整以下参数
pm.start_servers = 10 //php-fpm启动起始进程数 pm.min_spare_servers = 10 //php-fpm的最小空闲进程数 pm.max_spare_servers = 24 //php-fpm的最大空闲进程数 pm.max_requests = 500 //所有子进程重启时间
举例:所有子进程重启时间为300s一次,并发量为50,max_children设置为30,max_requests = 300*50/30=500,如果想让进程每隔一小时重生一次,则是3600*50/30=6000。
修改完成后我们需要重新启动PHP FPM服务通过使用以下命令后:
service php-fpm restart 或者 /etc/init.d/php5-fpm restart
说明:如果pm.max_requests没有设置重启参数,默认为不限制最大服务次数,也就是子进程永远不重启,经验表明,长时间不重启子进程会导致系统负载异常,处理时间变长等现象。