歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux基礎 >> Linux服務器

分析Linux系統計算機死機的故障原因

系統出現死機,一般分為兩種情況:一是硬件問題;二是軟件問題。
 
  一、硬件問題
 
  可以考慮分析以下幾點:
 
  1、不要超頻CPU,如果已經超頻的先回復到原來的頻率
 
  雖然平時運行沒有問題,但可能在高負載的使用中就會出現不可預料的故障了。特別是linux系統在某些應用上,是可以把硬件的性能發揮到極限的,但這樣的硬件運行Windows可能是沒有問題的。
 
  2、確認電源供電充足
 
  必須確保在高負載的狀態下,電源可以滿足負載。
 
  3、使用memtest86檢查內存狀態
 
  4、恢復BIOS到默認狀態
 
  對於服務器,可以使用自帶的監測工具進行測試,也是一個不錯的排錯方法。
 
  二、軟件問題
 
  如果已經基本排除硬件問題,那我們就必須考慮從軟件上去獲得死機狀態的系統信息了。
 
  1、運氣足夠好的話,系統死機不一定是完全死掉(此時鍵盤可能還能響應),那我們就可以使用Sysrq大法。
 
  前提是我們必須先打開sysrq功能:
 
  #echo "1" > /proc/sys/kernel/sysrq
 
  #setterm -blank
 
  這樣,當系統出現問題的時候,我們可以使用:
 
  引用
 
  Alt+Sysrq-T 獲得進程系統堆棧信息
 
  Alt+Sysrq-M 獲得內存分配信息
 
  Alt+Sysrq-W 獲得當前寄存器信息
 
  更多的熱鍵可以參考系統上的/usr/src/linux/Documentaion/sysrq.txt
 
  其中,setterm -blank可以關閉字符下定時黑屏保護,方便記錄屏幕信息。
 
  2、為了讓屏幕顯示更多的內核調試信息,可以修改控制台的顯示模式為80x25,在/boot/grub/menu.lst中對應的kernel一行最後,增加vga=0x305,如:
 
  引用
 
  kernel /boot/vmlinuz-2.4.21-9.30AXsmp ro root=/LABEL=/1 vga=0x305
 
  3、萬一鍵盤也不幸死掉了,那我們只能采用串口方式,把系統信息發送到另一台系統上,方法:
 
  修改/boot/grub/menu.lst文件,在kernel一行最後增加核心參數"console=ttyS0 console=tty1",如:
 
  引用
 
  kernel /boot/grub/vmlinuz-2.4.21-9.30AXsmp ro root=/LABEL=/1 console=ttyS0 console=tty1
 
  然後,修改/etc/sysconfig/syslog,加入klogd選項"-c 7",如:
 
  引用
 
  KLOGD_OPTIONS="-x -c 7"
 
  重啟服務器;進行測試:
 
  1)使用串口直連線連接客戶機和服務器,在客戶機上運行:
 
  cat /dev/ttyS0
 
  服務器上運行:
 
  echo hi > /dev/ttyS0
 
  如果客戶機有"hi"輸出即可。
 
  2)服務器上運行:
 
  echo w > /proc/sysrq-trigger
 
  看看客戶機上是否有相應的內核信息輸出
 
  3)服務器上運行:
 
  modprobe loop
 
  看看客戶機上是否有相應的內核信息輸出
 
  如果測試都通過的話,那麼在客戶機上運行:
 
  cat /dev/ttyS0 | tee /tmp/result
 
  當死機出現的時候,我們就可以從客戶機上看到需要的內核信息了(查看/tmp/result)。
 
  三、總結
 
  一般造成Linux系統死機的原因有:
 
  系統硬件問題(SCSI卡,主板,RAID卡,HBA卡,網卡,硬盤等)
 
  外圍硬件問題(網絡等)
 
  軟件問題(系統、應用軟件)
 
  驅動bug(找新的驅動)
 
  核心系統bug(到LKML看看,或更換核心再試)
 
  系統設置(恢復到缺省狀態,關閉防火牆等)

Copyright © Linux教程網 All Rights Reserved