连接到上游(php5-fpm)时资源暂时不可用

连接到上游(php5-fpm)时资源暂时不可用

当连接数约为 +10K 时,我经常会在随机页面上收到此错误 (netstat -an |grep 80 |wc -l)。当仍有 +10GB 可用内存且服务器负载小于 3 时,就会发生这种情况。

我的相关配置:

/etc/php5/fpm/php.ini

memory_limit = 1024M
default_socket_timeout = 120

/etc/php5/fpm/pool.d/www.conf

pm = dynamic 
pm.max_children = 30 
pm.start_servers = 5
pm.min_spare_servers = 2 
pm.max_spare_servers = 5 
;pm.max_requests =20000 #uncommented with any value didn't fixed
request_terminate_timeout = 120s

我还将上述值加倍(即 60 个子项、10 个启动项、10 个最大服务器),但无济于事。

/etc/nginx/nginx.conf

worker_connections 4024;
keepalive_timeout 10;

Nginx 本身在 Varnish 和 memcached 后面启用。页面渲染总体来说比较快。

这似乎是一个相当常见的问题,我找不到任何有用的解决方案,甚至找不到可能的原因分析。因此,非常感谢您的提示/解决方案。

答案1

不幸的是,如果没有更多细节,很难对这个问题给出明确的答案。

不过我有几个猜测:

我的第一个猜测是您的 php5-fpm 工作套接字的侦听积压量太小,无法满足您的负载。Linux 上的默认积压队列长度为 128。

为了增加它你应该:

  1. 增加net.core.somaxconnsysctl 值。
  2. 增加listen.backlogphp5-fpm配置设置。

例如,您可以尝试将两者都增加到 2048,看看是否有帮助。

我的第二个猜测是 nginx 工作进程的每个进程最大打开文件描述符限制。增加它的正确方法取决于您的发行版。在 Ubuntu/Debian 上,您应该查看/etc/default/nginx文件和worker_rlimit_nofilenginx 配置设置。

相关内容