阿帕奇伺服器無回應

阿帕奇伺服器無回應

我們在專用伺服器上託管我們的網路服務。

在高負載期間,伺服器經常會傳回逾時錯誤而不是頁面。

我們每天約有 17 萬個請求。

然而,伺服器有大量空閒內存,CPU 目前沒有載入。

我不明白為什麼伺服器運作不佳。

我已經使用 tcpdump 實用程式分析了問題案例。這些是 tcpdump 追蹤的好會話和壞會話。兩個實驗中的要求是相同的。

Good - server returns response.

Bad - no response, time-out error.

從這些數據你明白為什麼會出現問題嗎?我怎樣才能進一步接近錯誤的根源?

我已將真實 IP 位址替換為 123.45.67.890

---- 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
--------

有關服務的詳細資訊。

這是天氣預報服務。它是用 Perl 編寫的,由 MySQL 支援。該腳本使用了多個模組(來自 CPAN 和我們自己的)。

程式碼比較簡單。該腳本從另一台伺服器下載天氣、轉換資料格式並傳回 XML 回應。天氣緩存在 MyISAM DB 中。還有一個世界位置資料庫(INNODB),也可以透過腳本請求。

這些是在高負載期間採取的指標。

平均流量:3MBit/秒

平均資料包數:3300包/秒

主辦單位: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.htm 120 個子伺服器中只有 10 個正在運行,因此有足夠的空間用於新請求。

高負載期間的頂級程式快照。

------
top - 13:21:29 up 15 days, 18:36,  1 user,  load average: 0.18, 0.19, 0.21
Tasks: 137 total,   1 running, 136 sleeping,   0 stopped,   0 zombie
Cpu(s):  1.8%us,  1.2%sy,  0.0%ni, 92.8%id,  0.7%wa,  0.0%hi,  3.5%si,  0.0%st
Mem:   1033904k total,   590620k used,   443284k free,     6892k buffers
Swap:  3028212k total,    82556k used,  2945656k free,    64156k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
 4252 mysql     20   0  162m  48m 3352 S    1  4.8 279:01.27 mysqld
14503 www-data  20   0 43280  14m 3824 S    1  1.4   0:00.16 apache2
14577 www-data  20   0 43012  13m 3500 S    1  1.4   0:00.06 apache2
14401 www-data  20   0 45076  17m 4340 S    0  1.8   0:00.46 apache2
14414 www-data  20   0 45516  18m 4344 S    0  1.8   0:00.47 apache2
14420 www-data  20   0 45624  18m 4372 S    0  1.8   0:00.61 apache2
14421 www-data  20   0 45488  18m 4352 S    0  1.8   0:00.42 apache2
14496 www-data  20   0 44820  17m 4328 S    0  1.7   0:00.18 apache2
14510 www-data  20   0 45216  17m 4300 S    0  1.8   0:00.62 apache2
    1 root      20   0  2844  456  404 S    0  0.0   0:05.24 init
    2 root      15  -5     0    0    0 S    0  0.0   0:00.00 kthreadd
    3 root      RT  -5     0    0    0 S    0  0.0   0:00.24 migration/0
    4 root      15  -5     0    0    0 S    0  0.0  32:28.85 ksoftirqd/0
    5 root      RT  -5     0    0    0 S    0  0.0   0:00.77 watchdog/0
    6 root      RT  -5     0    0    0 S    0  0.0   0:00.15 migration/1
    7 root      15  -5     0    0    0 S    0  0.0   0:03.07 ksoftirqd/1
    8 root      RT  -5     0    0    0 S    0  0.0   0:00.63 watchdog/1
-----

答案1

有時我們的伺服器會出現一種奇怪的行為,它非常酷(「正常運行時間」會告訴你),但變得非常反應遲鈍。一種檢查方法是使用“netstat”,查看有多少行。您也可以嘗試 Apache mod_status。我們的問題仍然不是很清楚,但它肯定來自外部世界,即資料中心連接。您附近的一台機器可能會佔用所有頻寬,甚至在資料包到達您之前對其進行過濾,從而導致速度緩慢。

不確定它是否適用於你,但你顯然沒有很高的CPU 負載,而很多apache 進程在等待某些東西,也許他們在等待來自外部的答案......如果你有“sar”,它也可以提供協助。

答案2

沒有描述的是這個網路服務實際上是什麼設計/編寫的目的。通常,在並發執行緒中執行的應用程式程式碼可能會形成某種程度的公共資源爭用或等待某些成為瓶頸的後端資源。因此,即使記憶體或處理器利用率可能不高,這些其他公共資源的限制也可能會停止或延遲其他執行緒的處理,從而導致及時回應。

Apache 之上的應用程式平台是什麼來完成這項工作?以及服務 Web 服務請求所需的最末端資源點?如果涉及後端資料庫,資料庫伺服器中很可能會出現查詢死鎖。

答案3

/etc/apache2/apache.conf 檔案中的 mpm_prefork_module 和 mpm_worker_module 下有兩個部分

StartServers          5  
MinSpareServers       5  
MaxSpareServers      10  
MaxClients          150    
MaxRequestsPerChild   0  

您可能需要根據您的環境微調此部分以處理更多請求。

相關內容