我正在尝试解决一些奇怪的,间歇性的连接失败与Apache。 我注意到这个问题,当用户抱怨说,我们托pipe的Web应用程序的部分不起作用。 debugging显示,AJAX请求没有返回JavaScript应用程序期望的XML或JSON数据。 该应用程序通过SSL提供服务。
当我testing自己的时候,我会看到间歇性的失败,Firebug会显示响应长度为零,或者连接似乎完全失败。 服务器上的应用程序日志显示没有问题,包括当Firebug报告响应为空时 – 服务器上的应用程序日志显示数据已发送。
在预感上,我启动了apachebench( ab ),惊讶地发现一些连接失败:
[jnet@Stan ~]$ ab -v 1 -n 1000 -c 10 $url This is ApacheBench, Version 2.3 <$Revision: 655654 $> Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ Licensed to The Apache Software Foundation, http://www.apache.org/ Benchmarking workingman.smart-safe-secure.com (be patient) Completed 100 requests Completed 200 requests Completed 300 requests Completed 400 requests Completed 500 requests Completed 600 requests Completed 700 requests Completed 800 requests Completed 900 requests Completed 1000 requests Finished 1000 requests Server Software: Apache/2.2.3 Server Hostname: workingman.smart-safe-secure.com Server Port: 443 SSL/TLS Protocol: TLSv1/SSLv3,DHE-RSA-AES256-SHA,1024,256 Document Path: / Document Length: 659 bytes Concurrency Level: 10 Time taken for tests: 104.086 seconds Complete requests: 1000 Failed requests: 2 (Connect: 2, Receive: 0, Length: 0, Exceptions: 0) Write errors: 0 Total transferred: 945000 bytes HTML transferred: 659000 bytes Requests per second: 9.61 [#/sec] (mean) Time per request: 1040.855 [ms] (mean) Time per request: 104.086 [ms] (mean, across all concurrent requests) Transfer rate: 8.87 [Kbytes/sec] received Connection Times (ms) min mean[+/-sd] median max Connect: 356 844 215.7 840 2268 Processing: 68 194 138.9 128 1483 Waiting: 67 178 122.0 116 1426 Total: 494 1039 241.8 993 2623 Percentage of the requests served within a certain time (ms) 50% 993 66% 1039 75% 1101 80% 1162 90% 1407 95% 1492 98% 1626 99% 1718 100% 2623 (longest request)
这些请求是为了一个静态的HTML页面,所以我的PHP应用程序似乎不是这里的问题。 在普通的HTTP(non-ssl)上运行testing根本没有产生任何故障 。 我不知道会发生什么…甚至不知道如何从这里排除故障。 我将很乐意发布httpd.confconfiguration,只是让我知道哪些部分将帮助。 服务器是Apache / 2.2.3(CentOS),与mpm_worker和mod_fastcgi …
更新 :我只是有我的第一次abtesting返回2正常的HTTP连接失败,为同一个HTML页面。 所以它看起来像SSL不是问题毕竟…
更新2 :这可能是某种networking问题,因为我不能在同一个数据中心的服务器上使用ab来复制这个问题,也不能在本地主机上使用ab复制这个问题。 然而,从我的工作站ping有问题的服务器显示0%的数据包丢失…所以我不确定接下来要采取的步骤。
更新3 :万一它有帮助,如果我运行ab通过SSH隧道进行基准testing,我没有得到任何失败…所以也许这是一个networking问题,而不是一个Apache的问题…
当你说在相同的数据中心上完成请求时,或者当你使用ssh隧道的时候,它工作的很好,我认为这可能是你的远程站点在数据中心之间的某种forms。
就像icmp和ssh(和其他)比http更优先。 因此,如果WAN变得过载,则路由器可以丢弃httpstream量。 通常SSH是优先考虑的,因为它需要高度的交互性,而FTP的优先级较低,因为它是文件传输。
询问您的networking团队是否有Shaping或QOS。
另一件事告诉我,问题可能是,连接时间是从356到2268年。356是相当缓慢,我猜,SSH时,隧道是less于这一点。 min et max之间的差别如此之大,告诉我有些数据包可能会被删除(由于QOS / Shaping)并需要重新传输(所以连接时间较慢)