我最近将 30 个网站从旧服务器迁移到新服务器,现在在 nginx 上运行,就像以前在 apache 上运行一样。
除 1 个网站外,其他所有网站均运行正常。
我不知道为什么,但我在日志文件中收到这些消息/var/log/php7.2-fpm-example.log:
[09-Nov-2018 14:58:35] NOTICE: systemd monitor interval set to 10000ms
[10-Nov-2018 03:35:51] WARNING: [pool cappatrimonial] server reached max_children setting (5), consider raising it
[10-Nov-2018 06:30:09] WARNING: [pool cappatrimonial] child 4727 exited on signal 7 (SIGBUS) after 10458.281970 seconds from start
[10-Nov-2018 06:30:09] NOTICE: [pool cappatrimonial] child 13790 started
[10-Nov-2018 09:35:35] NOTICE: Terminating ...
[10-Nov-2018 09:35:35] NOTICE: exiting, bye-bye!
[10-Nov-2018 09:35:37] NOTICE: fpm is running, pid 31266
[10-Nov-2018 09:35:37] NOTICE: ready to handle connections
[10-Nov-2018 09:35:37] NOTICE: systemd monitor interval set to 10000ms
[10-Nov-2018 10:39:56] WARNING: [pool cappatrimonial] server reached max_children setting (10), consider raising it
正如你在上面看到的,我已经增加了max_children 设置从5到10然后消息又出现了。另外,问题可能每 3 小时或每 10 小时出现一次……没有逻辑。
在 nginx 错误日志文件上/var/log/nginx/example.error_log我发现这个:
2018/11/10 09:35:35 [error] 16088#16088: *77278 recv() failed (104: Connection reset by peer) while reading response header from upstream, client: server_ip_address, server: www.example.com, request: "GET //erreur-404 HTTP/1.1", upstream: "fastcgi://unix:/var/run/php/php7.2-fpm-example.sock:", host: "www.example.com"
2018/11/10 09:35:35 [info] 16088#16088: *77280 client server_ip_address closed keepalive connection (104: Connection reset by peer)
怎么了 ?
以下是我为此网站的 php-fpm 配置:
[global]
pid = /var/run/php/php7.2-fpm-example.pid
error_log = /var/log/php7.2-fpm-example.log
[example]
user = example
group = example
listen = /var/run/php/php7.2-fpm-example.sock
listen.owner = www-data
listen.group = www-data
php_admin_value[disable_functions] = exec,passthru,shell_exec,system
pm = ondemand
pm.max_children = 10
pm.process_idle_timeout = 20s
我真的不明白为什么这只出现在这个网站上,而不出现在其他网站上。
你知道吗,因为我迷路了:-/?
非常感谢
答案1
问题是由于错误的 php 脚本引起的,正如@Richard Smith 所建议的那样
我已经更新了网站并且现在运行良好。
谢谢
答案2
我突然开始遇到一个非常相似的问题,并且过去两天我一直试图解决它,但没有成功。
重启网络服务器后不久我就开始收到警告
- 警告:[pool www] 似乎很忙(您可能需要增加 pm.start_servers 或 pm.min/max_spare_servers)
- 警告:[pool www] 服务器已达到 pm.max_children 设置(100),请考虑提高该值
- [错误] 21#21:*10 上游读取响应标头时超时(110:操作超时),客户端:192.168.96.1,服务器:jase.tku.edu.tw,请求:“GET //404 HTTP/1.0”,上游:“fastcgi://unix:/var/run/php-fpm.sock”,主机:“example.com” 192.168.96.1 - - [26/Apr/2023:01:40:46 +0000] “GET //404 HTTP/1.0” 504 160 “-” “-”
在docker中运行的web服务器,192.168.96.1是docker网络的网关。
您最终如何确定导致该问题的 PHP 脚本?