当〜+ 10K连接(netstat -an | grep 80 | wc -l)时,我经常在随机页面上出现这个错误。 发生这种情况时,仍有+ 10GB的可用内存,服务器负载小于3。
我的相关configuration:
/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;
支持Varnish和memcached的Nginx本身是启用的。 一般页面渲染速度相当快。
这似乎是一个很常见的问题,我找不到任何有用的解决scheme,甚至分析可能的原因。 所以你的提示/解决scheme非常感激。
不幸的是,如果没有更多的细节,就很难给出明确的答案。
我有几个猜测,但:
我的第一个猜测是,你的php5-fpm工作套接字(s)有太小的监听积压。 Linux上的积压队列长度默认为128。
要增加它,你应该:
net.core.somaxconn sysctl值。 listen.backlog php5-fpmconfiguration设置。 你可以尝试增加两个2048例如看看是否有帮助。
我的第二个猜测是每个进程的最大打开文件描述符限制的nginx工人。 增加它的正确方法取决于你的分布。 在Ubuntu / Debian上,你应该看看/etc/default/nginx文件和worker_rlimit_nofile nginxconfiguration设置。