Apache 連線失敗故障排除

Apache 連線失敗故障排除

我正在嘗試解決 apache 的一些奇怪的、間歇性的連接故障。當用戶抱怨我們託管的部分 Web 應用程式無法運作時,我注意到了這個問題。偵錯顯示 AJAX 請求沒有傳回 JavaScript 應用程式期望的 XML 或 JSON 資料。該應用程式透過 SSL 提供服務。

當我測試自己時,我會看到間歇性故障,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(非 ssl)執行測試根本沒有產生任何故障。我不知道會發生什麼......甚至不知道如何從這裡排除故障。我很樂意發布 httpd.conf 配置,只需讓我知道哪些部分會有所幫助。伺服器是 Apache/2.2.3 (CentOS),帶有 mpm_worker 和 mod_fastcgi...

更新:對於同一個 HTML 頁面,我剛剛通過正常 HTTP 進行了第一次 ab 測試返回 2 個連接失敗。所以看來 SSL 根本不是問題...

更新2:這可能是某種網路問題,因為我無法ab在同一資料中心的伺服器上使用它來複製它,也無法ab在本機上使用它來複製它。然而,從我的工作站 ping 有問題的伺服器顯示 0% 封包遺失...所以我不確定下一步要採取什麼步驟。

更新3:如果它有幫助的話,如果我ab透過 SSH 隧道執行基準測試,我不會遇到任何失敗...所以也許這是網路問題而不是 apache 問題...

答案1

當您說在同一資料中心上完成請求或使用 ssh 隧道時它效果很好時,我認為這可能是資料中心上的遠端網站之間的某種整形。
就像 icmp 和 ssh(以及其他)是否比 http 優先級更高一樣。因此,如果 WAN 過載,路由器可能會丟棄 http 流量。一般來說,SSH 是優先的,因為它需要高互動性,而 FTP 的優先順序較低,因為它是檔案傳輸。
詢問您的網路團隊是否有任何整形或 QOS。

另一件事告訴我,問題可能是連接時間從 356 到 2268。356 相當慢,我猜當使用 SSH 建立隧道時,它會比這個慢。最小和最大之間的差異如此之大告訴我,某些資料包可能被丟棄(由於 QOS/整形)並且需要重新傳輸(因此連接時間較慢)

相關內容