
優秀的伺服器專家您好!
我正在運行一個 Ubuntu 伺服器,該伺服器託管 apache tomcat 服務以及 MySQL 資料庫。即使在一周最繁忙的時間,伺服器負載也始終接近零。儘管如此,我每週都會遇到隨機掛斷 1-2 次,整個伺服器停止回應。
這種鎖定的一個有趣的影響是,所有 cronjobs 似乎都比計劃的執行時間晚,至少各種系統日誌中的時間戳表明了這一點。因此,在我看來,確實是整個伺服器凍結了,而不僅僅是作為 tomcat 服務一部分運行的自訂軟體。掛斷通常會持續約 3-5 分鐘,然後一切都會恢復正常。
Hardware:
Model: Dell PowerEdge R720, 16 cores, 16 GB ram
HDD-configuration: Raid-1 (mirror)
Main services:
apache tomcat, mysql, ssh/sftp
#uname -a
Linux es2 2.6.24-24-server #1 SMP Tue Jul 7 19:39:36 UTC 2009 x86_64 GNU/Linux
運行 sysstat 我可以看到平均負載和磁碟區塊等待都出現了巨大的峰值,這與客戶報告後端系統問題的時間完全一致。下面是 sar 的磁碟使用圖,在中午 12.30 左右有一個非常明顯的峰值。
對於將其放在外部伺服器上,我深表歉意,但我的代表太低,無法直接在此處包含文件。還必須將它們放在一起,因為我只能發布一個連結:S
Sar 繪圖:http://213.115.101.5/abba/tmpdata/sardata_es.jpg
圖 1:阻止等待,注意 util% 如何在大約 12.58 處上升到 100%
圖2:塊傳輸,這裡沒有什麼異常。
圖 3:平均負載、峰值與圖 1 一起
圖 4:CPU 使用率,仍接近 0%。
圖5:內存,這裡沒有什麼異常
有誰知道什麼可能對系統造成這種影響?正如我之前解釋的,伺服器上運行的唯一軟體是具有 SOAP 介面的 tomcat 伺服器,以允許使用者連接到資料庫。遠端應用程式還透過 SSH 連接到伺服器以向其拉取和上傳檔案。在繁忙的時候,我猜測我們有大約 50 個並發 SSH/SFTP 連接,並且透過 http (soap/tomcat) 的連接不超過 1-200 個。
谷歌搜尋後我發現了有關檔案句柄和 inode 句柄的討論,但我認為這些對於 2.6.x 核心來說是正常的。有人不同意嗎?
cat /proc/sys/fs/file-nr
1152 0 1588671
cat /proc/sys/fs/inode-state
11392 236 0 0 0 0 0
同時「sar -v」顯示了上面掛起時間的這些值,但是這裡的 inode-nr 與上面相比總是非常高。
12:40:01 dentunusd file-nr inode-nr pty-nr
12:40:01 40542 1024 15316 0
12:45:01 40568 1152 15349 0
12:50:01 40587 768 15365 0
12:55:01 40631 1024 15422 0
13:01:02 40648 896 15482 0
13:05:01 40595 768 15430 0
13:10:01 40637 1024 15465 0
我在兩台運行相同硬體、作業系統、軟體、raid 配置等設定的獨立伺服器上看到過這種情況。
非常感謝您抽出時間
/Ebbe
答案1
這些問題與 Ubuntu 8.04 LTS (Hardy) 和 Dell PERC 6/i RAID 控制器之間的不相容問題有關,如以下錯誤中所報告:https://bugs.launchpad.net/ubuntu/+source/linux/+bug/607167 升級到 Ubuntu 10.04 LTS Lucid(核心 2.6.32)可以解決這個問題。
萬一其他人遇到同樣的問題。
答案2
可能您正在執行一些繁重的查詢,該查詢正在進行全表掃描。你檢查過你的慢查詢日誌嗎?
如果是這種情況,只需添加適當的索引即可。
PS:抱歉,如果您已經這樣做了。