连接失败:php_network_getaddresses:getaddrinfo failed:系统错误

时间:2017-12-07 15:56:54

标签: php nginx

  

连接失败:php_network_getaddresses:getaddrinfo失败:系统   错误

"System error"部分真的让我失望。

我一直在与这个错误作斗争几个月,这是非常零星的。它似乎来自我的数据库连接器。

重启php-fpm似乎可以缓解这个问题大约24小时,直到它再次开始行动。我原本以为它可能会使php-fpm击中最大的孩子,但在检查php-fpm状态后,它不是。

我尝试将错误与应用程序的syslognginx错误日志相关联,我的想法已经不多了。有关如何解决此问题的任何想法?

2 个答案:

答案 0 :(得分:1)

经过一番挖掘后,我认为我们的问题是我们的配置没有设置max_requests,孩子们从不回收。我们确实设置了process_idle_timeout,但我们在cron上运行了一些脚本,这些脚本使进程保持活动状态。

所以,如果是其他人:

//在回收流程之前处理的请求数量

pm.max_requests = 500;

//作为空闲进程的最长时间

pm.process_idle_timeout = 10s;

答案 1 :(得分:0)

这个问题突然出现在我们身上,令人困惑,因为它与Redis的连接有关

我知道Redis不是问题所在,我觉得很奇怪我们得到了#34;系统错误"部分,正如你提到的那样

我快速挖掘了php-fpm源码,看看是什么引发了这个错误并发现它与DNS查找有关(显然) - 但如果我有' 127.0.0.1,为什么会出现问题?本地主机'在/ etc / hosts中?

在挖掘更多后,我发现它与文件描述符和连接不相关。

我会确保你的php-fpm孩子们正在优雅地死去,这样就可以回收连接了。我在/etc/sysctl.conf中也有net.ipv4.tcp_tw_recycle = 0,这似乎导致了问题。

简而言之,检查lsof以查看谁在占用文件描述符,如果你还没有增加它们,你可能会增加它们!

相关问题