欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

php日志报错child exited with code 0 after seconds from start

程序员文章站 2024-01-16 17:49:04
...
因为之前发生502了,日志提示

[27-May-2015 13:54:34] WARNING: [pool www] seems busy (you may need to increase pm.start_servers, or pm.min/max_spare_servers), spawning 32 children, there are 16 idle, and 602 total children

然后我就自己随意增加了pm.start_servers参数,一段时间后,php日志/usr/local/php/var/log/php-fpm.log部分信息如下:


[27-May-2015 15:13:48] NOTICE: [pool www] child 3998 started

[27-May-2015 15:13:59] NOTICE: [pool www] child 9242 exited with code 0 after 47575.960999 seconds from start

[27-May-2015 15:13:59] NOTICE: [pool www] child 4210 started

[27-May-2015 15:14:42] NOTICE: [pool www] child 9217 exited with code 0 after 47619.884065 seconds from start

[27-May-2015 15:14:42] NOTICE: [pool www] child 5621 started

[27-May-2015 15:14:43] NOTICE: [pool www] child 9561 exited with code 0 after 47620.024499 seconds from start


原因就是没有pm.start_servers这个参数没有按照下面的这个公式来:

pm.start_servers= min_spare_servers + (max_spare_servers - min_spare_servers) / 2

一般min_spare_servers设置为20

max_spare_servers是根据服务器本身的内存来计算的,标准算法就是内存大小除以30M

当然,有的php程序可能占用比较小,不到30M,这就看情况来计算了。

我设置的是这样的

过滤注释部分:

cat /usr/local/php/etc/php-fpm.conf | grep -v "^;" | grep -v "^$"


[global]

pid = run/php-fpm.pid

error_log = log/php-fpm.log

emergency_restart_threshold = 10

emergency_restart_interval = 1m

process_control_timeout = 10s

rlimit_files = 65535

events.mechanism = epoll

[www]

user = www

group = www

listen = 127.0.0.1:9000

pm = dynamic

pm.max_children = 1400

pm.start_servers = 710

pm.min_spare_servers = 20

pm.max_spare_servers = 1400

pm.max_requests = 10000

slowlog = log/$pool.log.slow


然后重新加载下
/usr/local/nginx/sbin/nginx -s reload

之后几天日志没有出现信息了。