Lamp

如何解決間歇性伺服器掛起?寫入(和讀取)磁碟完全停止

  • November 7, 2016

我們有大約 6 個月的 LAMP 伺服器。CentOS 7.0

它在前 3 個月沒有重新啟動就不停地執行,然後它掛起。

然後它會執行接下來的 2 個月(也不會停止而無需重新啟動),然後它會再次掛起。

然後它執行了 14 天,然後它掛起。

然後它執行了 14 天,然後它掛起。

每次掛起後,我們都必須重新啟動伺服器。我們沒有添加/更新任何系統軟體。

在所有這些情況下,掛起症狀都是相同的:

寫入(和讀取)磁碟完全停止。

Web 伺服器和 MySQL 數據庫停止工作。我們無法通過物理控制台或通過 ssh 遠端登錄。

但是,當此掛起發生時,我打開了遠端 ssh shell 會話,其中執行了 linux“top”和“mytop”命令,並且這些命令一直在工作(刷新),直到伺服器重新啟動。

所以這證明伺服器沒有完全凍結。一些軟體仍在執行。

伺服器無法正常重啟。

我在日誌中什麼也沒找到。所有日誌同時停止。

發生掛起時,物理控制台 (KVM) 上的最後一個條目提到了 Adaptec RAID 控制器的錯誤。請看下圖:

00001
[1143965.194144) 0000000000000246 000000014423ecb4 1111880869b6b740 ffff880000c 00040
00040
[1143965.194786] Call Trace:
[1143965.195044] [<Ifffffffa007f46b>] aac_fib_send+0x3db/8x510 [aacraid] 
[1143965.195307] [<ffffffffa00794d8>] aac_get_adapter_info+0xc8/8xb70 [aacraid] [1143965.195573] [<ffffffffa007e990>] _aac_reset_adapter+0x430/0x620 [aacraid] 
[1143965.195573] [<ffffffffa007e990>] _aac_reset_adapter+0x430/0x620 [aacraid] 
[1143965.195838] [<ffffffffa0071a79>] aac_reset_adapter+0xa9/0x290 [aacraid] 
[1143965.196101] [<ffffffffa0076214>] aac_eh_reset+Oxla4/0xle0 [aacraid] 
[1143965.196368] [<ffffffff813d6d83>] scsi_try_host_reset+0x43/0x100 
[1143965.196628] [<ffffffff813d812,17>] scsi_eh_ready_devs+0x887/0xc20 
[1143965.196889] [<ffffffff813da43c>] scsi_error_handler+0x52c/8x820 
[1143965.197151] [<ffffffff813d9110>] ? scsi_eh_get_sense+0x2a0/0x2a0 
[1143965.197415] [<1111111181085aff>] kthread+0xcf/8xe0
[1143965.197675] [<1111111181085a30>] ? kthread_create_on_node+0x140/0x140 
[1143965.197939] [<111111118151316c>] ret_from_fork+Ox7c/OxbO
[1143965.198200] [<1111111181085a30>] ? kthread_create_on_node+0x140/0x140 
[1143965.198461] Code: 48 c? 87 b8 00 00 00 00 30 08 a0 5d c3 Al 11 84 00 00 00 00 00 Of 11 44 00 00 55 48 8b 87 90 01 00 00 48 89 e5 8b 80 be 00 00 00 <a8> 04 75 14 f6 c4 01 75 14 25 80 00 00 00 83 f8 01 19 c0 83 e0
00 00 Of 11 44 00 00 55 48 8b 87 90 01 00 00 48 89 e5 8b 80 be 00 00 00 <a8> 04 75 14 f6 c4 01 75 14 25 80 00 00 00 83 f8 01 19 c0 83 e0
75 14 f6 c4 01 75 14 25 80 00 00 00 83 f8 01 19 c0 83 e0
[1143974.082729] aacraid: aac_fib_send: first asynchronous command timed out. 
[1143974.082729] Usually a result of a PCI interrupt routing problem; 
[1143974.082729] update mother board BIOS or consider utilizing one of 
[1143974.082729] the SAFE mode kernel options (acpi, apic etc)

我們已經更換了 RAID 控制器卡,但它並沒有解決問題,我們再次遇到了同樣的症狀的掛起伺服器。

我現在有一個遠端 ssh shell 一直在執行“dmesg -wH”,希望在再次發生掛起時擷取更多的 dmesg 日誌。

伺服器有一個 Adaptec RAID 卡,RAID 1 中有兩個 SATA SSD 960GB,RAID 1 中有兩個 SATA 500 GB 硬碟。

所有驅動器的 SMART 屬性都可以。

有什麼建議嗎?

編輯 #1 9/13/2015:

所有分區上都有足夠的可用空間。

日誌正在正確旋轉。

編輯 #2 9/13/2015:

RAID 控制器:Adaptec ASR71605

BIOS:7.5-0 (32069)

韌體:7.5-0 (32069)

驅動程序:1.2-0 (30300)

引導快閃記憶體:7.5-0 (32069)

解決方案是使用 Adaptec 自己的驅動程序(可以從他們的網站下載)而不是 CentOS 附帶的開源驅動程序。該伺服器使用 Adaptec 驅動程序執行了大約 11 個月(然後伺服器因未知原因掛起),這與使用開源驅動程序的 14 天正常執行時間相比有了巨大的改進。

引用自:https://serverfault.com/questions/721987