Answers:
该错误意味着会话的另一端(Web服务器)突然断开连接。查看apache或nginx错误日志,看看那里是否有可疑的东西。
这意味着服务器被大量负载了请求,即所有线程都在忙于服务该请求。解决方案:增加server.xml文件中连接器的maxThread属性计数或增加acceptCount属性值。
acceptcount:当所有可能的请求处理线程都在使用中时,传入连接请求的最大队列长度。队列已满时收到的任何请求都将被拒绝。
我有同样的问题,我的服务器版本是:
Server Version: Apache/2.4.6 (CentOS) OpenSSL/1.0.1e-fips mod_fcgid/2.3.9 PHP/5.6.5 mod_perl/2.0.9dev Perl/v5.16.3
我删除了不必要的模块,问题消失了:
Server Version: Apache/2.4.6 (CentOS) OpenSSL/1.0.1e-fips
因此,mod_fcgid,mod_php或mod_perl之一引起了问题。如果不使用,可以尝试禁用这些功能。
(旁注;如果您使用的是opcache,也请禁用fast_shutdown。这也引起了问题:opcache.fast_shutdown = 0)
除了这里的答案,我还阅读了很多其他答案:
localhost
为127.0.0.1
ApacheBench, Version 2.3 <$Revision: 1807734 $>
)-r
(然后我得到apr_pollset_poll: The timeout specified has expired (70007)
)他们都没有帮助。
问题似乎与外围端口的数量有关。我尝试将其设置为50000至25000,因为这是端口范围。仍然没有运气。然后我得到的印象是它与TIME_WAIT和此博客文章有关。我想我可以确认:
$ netstat -nat | awk '{print $6}' | sort | uniq -c | sort -n
1 CLOSE_WAIT
1 established)
1 Foreign
4 LISTEN
8 SYN_SENT
62 SYN_RECV
351 ESTABLISHED
13916 TIME_WAIT
到目前为止,我还没有修复它:-/
根据sudo sysctl -a | grep net.ipv4.tcp
,我有:
net.ipv4.tcp_tw_reuse = 0 # No luck setting only that to 1
net.ipv4.tcp_max_tw_buckets = 32768
net.ipv4.tcp_fin_timeout = 60 # Setting it to 5 didn't help either