Linux伺服器宕機案例第二則

来源:http://www.cnblogs.com/kerrycode/archive/2016/07/08/5653586.html
-Advertisement-
Play Games

郵件告警發現海外工廠一Linux伺服器連接不上,DPA(Database Performance Analyzer)系統也發現其出現問題,ping這台伺服器發現網路不通,聯繫不到當地系統管理員,郵件咨詢後,這個系統管理員也發現有問題,直接重啟了,事後檢查發現日誌message裡面,從10:10分開始... ...


    郵件告警發現海外工廠一Linux伺服器連接不上,DPA(Database Performance Analyzer)系統也發現其出現問題,ping這台伺服器發現網路不通,聯繫不到當地系統管理員,郵件咨詢後,這個系統管理員也發現有問題,直接重啟了,事後檢查發現日誌message裡面,從10:10分開始出現下麵錯誤信息(敏感信息處理了)

Jul  7 10:10:27 localhost kernel: ata2.00: qc timeout (cmd 0xa0)
Jul  7 10:11:00 localhost kernel: ata2.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x6 frozen
Jul  7 10:11:00 localhost kernel: sr 2:0:0:0: CDB: Test Unit Ready: 00 00 00 00 00 00
Jul  7 10:11:00 localhost kernel: ata2.00: cmd a0/00:00:00:00:00/00:00:00:00:00/a0 tag 0
Jul  7 10:11:00 localhost kernel:          res 51/20:03:00:00:00/00:00:00:00:00/a0 Emask 0x5 (timeout)
Jul  7 10:11:00 localhost kernel: ata2.00: status: { DRDY ERR }
Jul  7 10:11:00 localhost kernel: ata2: soft resetting link
Jul  7 10:11:00 localhost kernel: INFO: task hald-addon-stor:3728 blocked for more than 120 seconds.
Jul  7 10:11:00 localhost kernel: "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
Jul  7 10:11:00 localhost kernel: hald-addon-st D ffff8801989b6080     0  3728   3690 0x00000080
Jul  7 10:11:00 localhost kernel:  ffff880428dd76a8 0000000000000082 ffff880428dd7668 ffff88042c6300d0
Jul  7 10:11:00 localhost kernel:  ffff8804294ac0c0 ffff88040d730700 ffff8804294ac490 ffffffff812ef88e
Jul  7 10:11:00 localhost kernel:  ffff880428dd76a8 ffffffff81311442 ffff88042c630000 7fffffffffffffff
Jul  7 10:12:06 localhost kernel: Call Trace:
Jul  7 10:12:06 localhost kernel:  [<ffffffff812ef88e>] ? scsi_done+0x0/0x17
Jul  7 10:12:06 localhost kernel:  [<ffffffff81311442>] ? __ata_scsi_queuecmd+0x1a6/0x200
Jul  7 10:12:06 localhost kernel:  [<ffffffff814527e9>] schedule_timeout+0x36/0xe7
Jul  7 10:12:06 localhost kernel:  [<ffffffff812331b6>] ? kobject_put+0x47/0x4c
Jul  7 10:12:06 localhost kernel:  [<ffffffff8104367e>] ? need_resched+0x23/0x2d
Jul  7 10:12:06 localhost kernel:  [<ffffffff8145265b>] wait_for_common+0xb7/0x12c
Jul  7 10:12:06 localhost kernel:  [<ffffffff8104cf2f>] ? default_wake_function+0x0/0x19
Jul  7 10:12:06 localhost kernel:  [<ffffffff8121e449>] ? __generic_unplug_device+0x32/0x37
Jul  7 10:12:06 localhost kernel:  [<ffffffff81452773>] wait_for_completion+0x1d/0x1f
Jul  7 10:12:06 localhost kernel:  [<ffffffff8122540b>] blk_execute_rq+0xcb/0x104
Jul  7 10:12:06 localhost kernel:  [<ffffffff8121d88c>] ? freed_request+0x34/0x55
Jul  7 10:12:06 localhost kernel:  [<ffffffff812f60af>] scsi_execute+0xde/0x12e
Jul  7 10:12:06 localhost kernel:  [<ffffffff812f61cc>] scsi_execute_req+0xcd/0xf2
Jul  7 10:12:06 localhost kernel:  [<ffffffff81302a9a>] sr_test_unit_ready+0x5c/0xb5
Jul  7 10:12:06 localhost kernel:  [<ffffffff81302d0f>] sr_media_change+0x5d/0x28a
Jul  7 10:12:06 localhost kernel:  [<ffffffff810448c9>] ? task_rq_unlock+0x11/0x13
Jul  7 10:12:06 localhost kernel:  [<ffffffff8104cf08>] ? try_to_wake_up+0x3aa/0x3d1
Jul  7 10:12:06 localhost kernel:  [<ffffffff8131f73f>] media_changed+0x53/0x88
Jul  7 10:12:06 localhost kernel:  [<ffffffff8131f7a5>] cdrom_media_changed+0x31/0x37
Jul  7 10:12:06 localhost kernel:  [<ffffffff81303072>] sr_block_media_changed+0x19/0x1b
Jul  7 10:12:06 localhost kernel:  [<ffffffff8114407d>] check_disk_change+0x29/0x5b
Jul  7 10:12:06 localhost kernel:  [<ffffffff81322f9b>] cdrom_open+0x919/0x9b9
Jul  7 10:12:06 localhost kernel:  [<ffffffff810447f2>] ? __wake_up_sync_key+0x53/0x5f
Jul  7 10:12:06 localhost kernel:  [<ffffffff8142ebec>] ? unix_stream_recvmsg+0x40f/0x4d3
Jul  7 10:12:06 localhost kernel:  [<ffffffff813b63b5>] ? skb_release_data+0xaa/0xaf
Jul  7 10:12:06 localhost kernel:  [<ffffffff8142ebec>] ? unix_stream_recvmsg+0x40f/0x4d3
Jul  7 10:12:06 localhost kernel:  [<ffffffff8104367e>] ? need_resched+0x23/0x2d

clip_image001

 

系統版本為Oracle Linux Server release 5.7, VMware虛擬機,剛開始檢查的時候,註意力集中在“ kernel: INFO: task hald-addon-stor:3728 blocked for more than 120 seconds”等相關信息上,關於hald-addon-store,這個是掛載媒體設備讀寫操作的進程,它是一個硬體守護進程,不停的檢測有沒有設備接入接出。

 

[root@localhost log]# grep 'Jul  7' messages | grep -E 'more than 120 seconds|hung_task_timeout_secs'
Jul  7 10:11:00 localhost kernel: INFO: task hald-addon-stor:3728 blocked for more than 120 seconds.
Jul  7 10:11:00 localhost kernel: "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
Jul  7 10:12:06 localhost kernel: INFO: task hald-addon-stor:3728 blocked for more than 120 seconds.
Jul  7 10:12:06 localhost kernel: "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
Jul  7 10:17:39 localhost kernel: INFO: task hald-addon-stor:3728 blocked for more than 120 seconds.
Jul  7 10:17:39 localhost kernel: "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
[root@localhost log]# 

 

而關於“task blocked for more than 120 seconds”,網上很多資料都千篇一律的說,修改參數 vm.dirty_ratio 和 vm.dirty_backgroud_ratio 可以避免這個問題。但是我對這個還是有點疑慮,理由如下一些:

 

1:這台伺服器的vm.dirty_background_ratio 參數為10,vm.dirty_ratio為20。這個我查了一下,Redhat的官方文檔介紹這是預設值。

[root@localhost log]# sysctl -a | grep 'vm.dirty'
vm.dirty_background_ratio = 10
vm.dirty_background_bytes = 0
vm.dirty_ratio = 20
vm.dirty_bytes = 0
vm.dirty_writeback_centisecs = 500
vm.dirty_expire_centisecs = 3000

 

2: 這台伺服器已經運行好多年了,如果這個參數有問題,理應經常出現這個問題,但是到目前為止只出現了一次這個問題。

 

3: 我們還有多台伺服器都是這個操作系統版本,內核參數同樣是官方的預設值,也沒有見到其出現過這樣的問題。

當然也不排除某些操作觸發了某些臨界值導致了這個錯誤。那麼我們還是繼續分析一下錯誤信息吧,看能否挖掘出一些信息。

 

 

sar -r 查看發現這一段時間的記憶體使用情況,已使用記憶體的百分數(%memused)非常高,已使用交換空間的百分數(%swapused)比例也在個位數到40%直接,伺服器在10:31重啟,10:00 到10:30之間的數據沒有,不清楚什麼原因導致。從這些數據也可以看出記憶體資源非常緊張。

clip_image002

 

另外也用sar -u查看了CPU,CPU使用率不高。基本正常,當時忘記查看I/O和傳送速率的統計信息(現在去查看,已經看不到昨天的數據了),另外在message日誌裡面看到有"ata2.00: status: { DRDY ERR }", "ata2.00: qc timeout(cmd 0xa0)"; 之類的錯誤信息

clip_image003

 

關於這個錯誤,很多資料都說是硬碟故障或硬碟讀寫錯誤等等。也有說是內核bug的

clip_image004

 

當然我們系統的內核版本為2.6.32-200.13.1.el5uek ,這個https://lists.linuxfoundation.org/pipermail/bugme-new/2009-July/022389.html 鏈接也說了不止出現在2.6.31這個內核版本:

I have seen this messages not only on 2.6.31... also on many other 2.6 kernels.

但是自己的知識和經驗也無法判斷、定位問題,只能有個模糊的判斷,要麼是硬碟故障或讀寫錯誤,要麼是內核錯誤。讓那邊系統管理員去檢查存儲設備是否有什麼告警,暫時沒有回饋,檢查磁碟分區是否存在壞塊,發現沒有壞塊情況

[root@localhost ~]# /sbin/badblocks -v /dev/sda
Checking blocks 0 to 104857600
Checking for bad blocks (read-only test): done                                
Pass completed, 0 bad blocks found.
[root@localhost ~]# /sbin/badblocks -v /dev/sdb
Checking blocks 0 to 157286400
Checking for bad blocks (read-only test): done                                
Pass completed, 0 bad blocks found.
[root@localhost ~]# /sbin/badblocks -v /dev/sdc
Checking blocks 0 to 41943040
Checking for bad blocks (read-only test): done                                
Pass completed, 0 bad blocks found.
[root@localhost ~]# /sbin/badblocks -v /dev/sdd
Checking blocks 0 to 104857600
Checking for bad blocks (read-only test): done                                
Pass completed, 0 bad blocks found.
[root@localhost ~]# /sbin/badblocks -v /dev/sde
Checking blocks 0 to 188743680
Checking for bad blocks (read-only test): done                                
Pass completed, 0 bad blocks found.

 

另外在message裡面發現系統啟動時,有大量BAR 13: can't allocate I/O resource [0x10000-0xffff]信息。

Jul  7 10:32:02 egvlnx03 kernel: ACPI: ACPI bus type pnp unregistered
Jul  7 10:32:02 egvlnx03 kernel: system 00:01: ioport range 0x1000-0x103f has been reserved
Jul  7 10:32:02 egvlnx03 kernel: system 00:01: ioport range 0x1040-0x104f has been reserved
Jul  7 10:32:02 egvlnx03 kernel: system 00:01: ioport range 0xcf0-0xcf1 has been reserved
Jul  7 10:32:02 egvlnx03 kernel: system 00:08: iomem range 0xfed00000-0xfed003ff has been reserved
Jul  7 10:32:02 egvlnx03 kernel: system 00:0d: ioport range 0xfce0-0xfcff has been reserved
Jul  7 10:32:02 egvlnx03 kernel: system 00:0d: iomem range 0xf0000000-0xf7ffffff has been reserved
Jul  7 10:32:02 egvlnx03 kernel: system 00:0d: iomem range 0xfe800000-0xfe9fffff has been reserved
Jul  7 10:32:02 egvlnx03 kernel: pci 0000:00:15.3: BAR 13: can't allocate I/O resource [0x10000-0xffff]
Jul  7 10:32:02 egvlnx03 kernel: pci 0000:00:15.4: BAR 13: can't allocate I/O resource [0x10000-0xffff]
Jul  7 10:32:02 egvlnx03 kernel: pci 0000:00:15.5: BAR 13: can't allocate I/O resource [0x10000-0xffff]
Jul  7 10:32:02 egvlnx03 kernel: pci 0000:00:15.6: BAR 13: can't allocate I/O resource [0x10000-0xffff]
Jul  7 10:32:02 egvlnx03 kernel: pci 0000:00:15.7: BAR 13: can't allocate I/O resource [0x10000-0xffff]
Jul  7 10:32:02 egvlnx03 kernel: pci 0000:00:16.3: BAR 13: can't allocate I/O resource [0x10000-0xffff]
Jul  7 10:32:02 egvlnx03 kernel: pci 0000:00:16.4: BAR 13: can't allocate I/O resource [0x10000-0xffff]
Jul  7 10:32:02 egvlnx03 kernel: pci 0000:00:16.5: BAR 13: can't allocate I/O resource [0x10000-0xffff]
Jul  7 10:32:02 egvlnx03 kernel: pci 0000:00:16.6: BAR 13: can't allocate I/O resource [0x10000-0xffff]
Jul  7 10:32:02 egvlnx03 kernel: pci 0000:00:16.7: BAR 13: can't allocate I/O resource [0x10000-0xffff]
Jul  7 10:32:02 egvlnx03 kernel: pci 0000:00:17.3: BAR 13: can't allocate I/O resource [0x10000-0xffff]
Jul  7 10:32:02 egvlnx03 kernel: pci 0000:00:17.4: BAR 13: can't allocate I/O resource [0x10000-0xffff]
Jul  7 10:32:02 egvlnx03 kernel: pci 0000:00:17.5: BAR 13: can't allocate I/O resource [0x10000-0xffff]
Jul  7 10:32:02 egvlnx03 kernel: pci 0000:00:17.6: BAR 13: can't allocate I/O resource [0x10000-0xffff]
Jul  7 10:32:02 egvlnx03 kernel: pci 0000:00:17.7: BAR 13: can't allocate I/O resource [0x10000-0xffff]
Jul  7 10:32:02 egvlnx03 kernel: pci 0000:00:18.2: BAR 13: can't allocate I/O resource [0x10000-0xffff]
Jul  7 10:32:02 egvlnx03 kernel: pci 0000:00:18.3: BAR 13: can't allocate I/O resource [0x10000-0xffff]
Jul  7 10:32:02 egvlnx03 kernel: pci 0000:00:18.4: BAR 13: can't allocate I/O resource [0x10000-0xffff]
Jul  7 10:32:02 egvlnx03 kernel: pci 0000:00:18.5: BAR 13: can't allocate I/O resource [0x10000-0xffff]
Jul  7 10:32:02 egvlnx03 kernel: pci 0000:00:18.6: BAR 13: can't allocate I/O resource [0x10000-0xffff]
Jul  7 10:32:02 egvlnx03 kernel: pci 0000:00:18.7: BAR 13: can't allocate I/O resource [0x10000-0xffff]

 

經過查證,有篇文章解釋了這個消息出現的原因,並表示可以忽略這個問題。

  該消息表明內核無法分配預取記憶體插槽。

  預取記憶體插槽的編號是 13(PCI_BRIDGE_RESOURCES)。

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 簡介 最小(少)原則,是安全的重要原則。最小的許可權,最小的用戶,最少的服務,最少的進程,是最安全的。 系統安全包括:文件系統保護、用戶管理安全、進程的保護以及日誌的管理。 場景 1. 確保服務最少,每個都是有用,而且許可權最小化。 2. 確保用戶最少,每個都是有用,而且許可權最小化。 3. 確保文件許可權 ...
  • Ubuntu 固定IP 1. 更改/etc/network/interfaces的內容 1.1 註釋掉原來的內容 1.2 添加以下內容 auto eth0 iface eth0 inet static address 192.168.1.119 netmask 255.255.255.0 getew ...
  • 在RHEL5.x版本下麵,在添加磁碟分區等操作後,一直使用partproble命令使內核重新讀取分區表信息,從而不用重新啟動。但是最近在RHEL 6(Red Hat Enterprise Linux Server release 6.6 (Santiago))下,使用partprobe出現錯誤。 [... ...
  • Kubernetes為Google開源的容器管理框架,提供了 Docker容器的誇主機、集群管理、容器部署、高可用、彈性伸縮 等一系列功能;Kubernetes的設計目標包括使容器集群任意時刻都處於用戶期望的狀態,因而建立了一整套集群管理機制:容器自動重啟、自動備份、容器自動伸縮等;Kubernet ...
  • 我會用幾篇博客總結一下在Linux中進程之間通信的幾種方法,我會把這個開頭的摘要部分在這個系列的每篇博客中都打出來 進程之間通信的方式 管道 消息隊列 信號 信號量 共用存儲區 套接字(socket) 進程間通信(三)—信號量傳送門:http://www.cnblogs.com/lenomirei/ ...
  • 一. 準備工作 1. 需要一個Linux宿主系統,例如早先版本的 LFS,Ubuntu/Fedora,SuSE 或者是在你的架構上可以運行的其它發行版 二. LFS目標架構 LFS主要支持 AMD/Intel 的 x86(32 位)和 x86_64(64 位) 的目標架構。另外,做一些更改可以讓LF ...
  • 1. 修改官方軟體庫列表 編輯/etc/apt/sources.list,註釋掉原有內容,然後添加下述內容。 2. 執行更新命令並重啟 參考鏈接: 1. Kali Linux, Rolling Edition Released – 2016.1 ...
  • Apache + MySql + Php. 1、安裝Apache Apache可以用下麵的命令來安裝 sudo apt-get install apache2 Apache預設路徑是/var/www/ 其配置文件路徑為: /etc/apache2/ 可以通過:sudo nano /etc/apach ...
一周排行
    -Advertisement-
    Play Games
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...