有时我会收到错误信息:
stream_socket_client(): php_network_getaddresses: getaddrinfo failed: Name or service not known
我发现问题总是出在 php-fpm 上,因为在重新启动 php-fpm 服务后它再次运行良好。它在 1-3 个月内随机发生。或者在一个 php session 中多次使用名称解析函数时会发生这种情况。 我的服务器是 CentOS 7.5、Apache 2.4、PHP 7.x,已更新。 你知道应该是什么问题吗?
在日志中我只看到一些:
WARNING:server reached pm.max_children setting (8), consider raising it
但它工作正常。
最佳答案
PHP-FPM 会达到 max_children 的最常见原因是:
- 来自您客户的大量并行请求
- max_children 的设置非常低
但是,对于这种情况,我假设是由 max_children 的低设置引起的。所以请增加它。
$ sudo vi /etc/php-fpm.d/www.conf
您可以在 [php-fpm-pool-settings]
部分找到 pm.max_children
。
要了解 pm.max_children
使用什么,您可以使用此计算:
pm.max_children = 专用于 Web 服务器的总 RAM/Max child 进程大小。
请记住为您在系统上运行的额外服务留出一些 RAM。
另请记住,越高并不总是越好。如果您的 PHP 脚本不好,这些设置将无法解决您的问题。调整这些设置并查看最适合您的服务器的设置。进行更改后,您需要重新启动 PHP-FPM 服务。
$ sudo systemctl restart php-fpm
请查看this tutorial了解更多信息
关于php-fpm 和 dns 随机工作不正常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50637215/