所以,如果我用apache基准(ab)做一些基准testing,并且使用大量的请求。 然后有时在testing中间,我得到这个错误。
我甚至不知道这是什么意思。 那我该如何解决呢? 或者,如果服务器得到太多的命中,这只会发生? 问题是,如果我运行10,000次命中,它将完全运行。 如果我再次运行,它会达到4000,并得到错误:
apr_socket_recv: Connection reset by peer (104)
有关我的设置:我有nginx静态请求和处理dynamic的阿帕奇。 有问题的文件是由nginxcaching提供的,所以我猜这可能与nginx如何处理请求有关。
想法?
错误意味着另一端(web服务器)在会话中间突然断开。 看看apache或nginx错误日志,看看有没有可疑的东西。
这意味着服务器负载很大,即所有线程正在忙于服务请求。 解决scheme:或者增加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中的一个会导致问题。 如果您不使用,可以尝试禁用这些function。
(注意;如果你使用的是opcache,也禁用fast_shutdown,这也造成了问题:opcache.fast_shutdown = 0)