-
linux主機宕機排查思路
-
原因分析
服務器分類,web服務器,數據庫服務器,文件服務器,中間件,其它服務器。
web服務器分析:常見的web應用apache,nginx,IIS等。
宕機原因很多,cpu,內存,IO磁盤,應用BUG,內核BUG,硬件等
系統和內核版本
流程
1.查看宕機的時間記錄和歷史登陸還有重啟時間
last reboot
last -F |grep crash
查看歷史登陸有沒有異常的用戶
last
2.首先查看系統日志。如linux下的/var/log/下的log日志,包括message,內核報錯日志demsg等等,sa記錄,是記錄cpu,內存等運行的性能文件,記錄着運行時的cpu的運行狀態如圖所示。
利用sa文件查看宕機時CPU情況
利用sa文件查看宕機時內存情況
日志量往往很大
還可以進行模糊查詢,如
查看報錯
tail -200 /var/log/messages |grep "Error"
cat /var/log/dmesg |grep "Error"
查看內核崩潰日志
tail -200 /car/log/messages |grep "crash"
查看是否出現OOM,一般會出現kill殺死進程的情況
cat /var/log/messages |grep -i "kill"
還可以查看宕機時間段的日志,查看12月11日15點的日志
cat /vat/log/messages |grep "Feb 11 15*"
3.查看內存使用
free -m,查看swap的使用和內存剩余情況和緩存。如果swap用了,且available也不夠了,具體還要查看參數cat /proc/sys/vm/swappiness,如果設置為0,說明內存不夠了。
4.查看io和文件系統使用
觀察idle和iowait。磁盤讀寫時會用到緩存,一般為系統內存的40%,但是中間有一個緩沖時間120秒,將要用完這個緩存時,且會等待120秒,才會寫入磁盤,在讀寫頻繁的時候容易造成hang住的情況。
查看IO的讀寫速度,如果很慢說明磁盤性能出現瓶頸。
文件系統使用
5.查看安全日志
安全日志為/var/log/secure,查看history記錄,查看是否有人登陸主機並做了惡意動作,例如關機。
6.利用kdump和crash工具分析內核
檢查服務器開啟了kdump服務,並在/var/crash目錄找到了當天生成的vmcore文件,使用crash工具分析vmcore文件。
Kdump 用於對內存鏡像的轉儲,它不但可以轉儲內存鏡像到本地硬盤,還可以將內存鏡像通過NFS,SSH 等協議轉儲到不同機器的設備上。
Kdump 分為兩個組件:Kexec 和Kdump。
Kexec 是一種內核的快速啟動工具,可以使新的內核在正在運行的內核(生產內核)的上下文中啟動,而不需要通過耗時的BIOS 檢測,方便內核開發人員對內核進行調試。
Kdump 是一種有效的內存轉儲工具,啟用 Kdump 后,生產內核將會保留一部分內存空間,用於在內核崩潰時通過 Kexec 快速啟動到新的內核,這個過程不需要重啟系統,因此可以轉儲崩潰的生產內核的內存鏡像。
7.查看服務日志和監控軟件
如果在能找到宕機時進程的占用情況,可以根據占用異常的服務查看其日志。
服務日志一般有數據庫和web服務,中間件,框架等。
還可以查看監控軟件的歷史記錄圖像,找到峰值點和宕機時間點的圖像分析如下圖。
8.總結
系統宕機的原因很多,需要我們細心的按照流程分析,