為什麼伺服器沒有回應?

為什麼伺服器沒有回應?

我們的伺服器有時會拒絕提供簡單的 HTML 頁面。

這種情況發生在請求數量相對較多的情況下。不過,處理器負載並不重,並且有大量空閒記憶體。該錯誤似乎平均在 50 個請求中出現 1 個,具體取決於伺服器負載。

我需要找到問題的根源並採取適當的行動來消除它。

我懷疑問題根源是大量傳入的網路封包。平均每秒有 5000 個資料包。流量 - 2 MBits/sec 這可能是錯誤的原因嗎?

有一件有趣的事情,如果伺服器無法回應,Apache 不會將請求字串記錄到 access.log 中。

此錯誤可在多台客戶端電腦上重複出現。不涉及DNS,因為我是透過IP存取伺服器的。

我已經使用 tcpdump 實用程式分析了問題案例。這些是 tcpdump 追蹤的好會話和壞會話。兩個實驗中的要求是相同的。好 - 伺服器回傳回應。不好 - 無回應,超時錯誤。

---- Bad ----
12:23:36.366292 IP 123.45.67.890.61749 > myserver.superbservers.com.www: S 2125316338:2125316338(0) win 8192 <mss 1460,nop,wscale 2,nop,nop,sackOK>
12:23:39.362394 IP 123.45.67.890.61749 > myserver.superbservers.com.www: S 2125316338:2125316338(0) win 8192 <mss 1460,nop,wscale 2,nop,nop,sackOK>
12:23:45.365567 IP 123.45.67.890.61749 > myserver.superbservers.com.www: S 2125316338:2125316338(0) win 8192 <mss 1460,nop,nop,sackOK>
--------

---- Good ----
12:27:07.632229 IP 123.45.67.890.63914 > myserver.superbservers.com.www: S 3581365570:3581365570(0) win 8192 <mss 1460,nop,wscale 2,nop,nop,sackOK>
12:27:10.620946 IP 123.45.67.890.63914 > myserver.superbservers.com.www: S 3581365570:3581365570(0) win 8192 <mss 1460,nop,wscale 2,nop,nop,sackOK>
12:27:10.620969 IP myserver.superbservers.com.www > 123.45.67.890.63914: S 2654770980:2654770980(0) ack 3581365571 win 5840 <mss 1460,nop,nop,sackOK,nop,wscale 6>
12:27:10.838747 IP 123.45.67.890.63914 > myserver.superbservers.com.www: . ack 1 win 4380
12:27:10.957143 IP 123.45.67.890.63914 > myserver.superbservers.com.www: P 1:213(212) ack 1 win 4380
12:27:10.957152 IP myserver.superbservers.com.www > 123.45.67.890.63914: . ack 213 win 108
12:27:10.965543 IP myserver.superbservers.com.www > 123.45.67.890.63914: P 1:630(629) ack 213 win 108
12:27:10.965621 IP myserver.superbservers.com.www > 123.45.67.890.63914: F 630:630(0) ack 213 win 108
12:27:11.183540 IP 123.45.67.890.63914 > myserver.superbservers.com.www: . ack 631 win 4222
12:27:11.185657 IP 123.45.67.890.63914 > myserver.superbservers.com.www: F 213:213(0) ack 631 win 4222
12:27:11.185663 IP myserver.superbservers.com.www > 123.45.67.890.63914: . ack 214 win 108
--------

主辦單位:SuperbHosting

作業系統:Ubuntu

伺服器參數:E6300 CONROE 1.86GHZ 2 X 1MB CACHE 1066 1GB DDR2 667MHZ

這是我們使用的 apache 設定檔的鏈接http://repkin5.snow.prohosting.com/apache.txt

這是逾時錯誤後立即取得的伺服器狀態報告。http://repkin5.snow.prohosting.com/server-status.htm120 個子伺服器中只有 10 個正在運行,因此有足夠的空間用於新請求。

虛擬機器統計

procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa
 0  0   8900 725900   8468  65684    0    0     5    18   11   33  4  3 92  1

答案1

  • 有一件有趣的事情,如果伺服器無法回應,Apache 不會將請求字串記錄到 access.log 中。

這聽起來像是網路問題。伺服器應該記錄它收到的任何請求,即使它由於某種原因無法回應。您可能想要驗證網路伺服器上沒有看到資料包遺失。

答案2

您有可能處於 TCP 連線的可用核心緩衝區較低的情況。我希望從中進行一些日誌記錄(登錄到伺服器,測試直到“無回應”,然後運行dmesg並查看是否有任何內容適用)。

若要調整網路設置,這可能是個起點

正如 Chris Nava 所說,確保網路中不存在封包遺失可能是值得的,因此請務必開始使用 ping 進行檢查(唉,回應 ping 與處理 TCP 封包完全不同) )。

相關內容