服務器宕機原因排查思路


作為運維工程師來說,日常工作中肯定會遇到服務器宕機的問題,除了快速恢復業務之外,排查宕機原因有時候也很麻煩,以下是自己對宕機可能的原因及排查思路的一個簡單總結,比較常規,還不涉及系統參數配置的優化,僅供參考,后續有新的思路會再補充。

1.真假死機

  真死機
  服務器確確實實宕機了,導致服務不可用,無法訪問。
  假死機
  由於硬件資源暫時性地被消耗殆盡,因而無法對外部指令進行響應的現象,比如CPU和內存被占滿,表明有軟件正在大量的占用服務器的內存和CPU,或者網站處於訪問高峰期,帶寬資源跑滿等,這時只需要等待一定的時間,待服務器騰出更多的硬件資源即可恢復正常,如果長時間恢復不了,可能需要我們手動處理下,比如殺死進程。

  那么,如何解決這個問題呢?第一,要從網站着手,看看是不是網站程序有不合理的地方,數據查詢,是否有死循環。盡可能的用html靜態網頁顯示,減輕數據庫的壓力。第二,升級服務器硬件配置,例如:加大服務器內存,升級服務器CPU,加大服務器帶寬,這樣就可以解決服務器假死機的問題。

2.宕機可能原因

  • 訪問量過高,超出系統承載能力,包括正常的短暫性突增,或者異常訪問,比如黑客攻擊等;
  • 服務器配置過低,導致即便訪問量不算太高也超出了系統承載能力,需要提高配置;
  • 應用程序本身存在bug,比如死循環,消耗系統資源的邏輯導致資源耗盡;
  • 某些系統參數配置不合理,比如fd個數或允許連接數過低等;
  • 多線程造成的死鎖現象,互相等待對方釋放資源;
  • 服務器硬件故障,比如內存故障,需要更換;
  • 系統內核bug,比如軟死鎖等,需要升級內核;
  • 當然,也有可能是人為誤操作導致的;

3.排查思路  

  首先判斷是真死還是假死,如果假死,那等一段時間或手動殺死進程即可,如果真死則需要進一步排查;

  查看系統日志 /var/log/messages,分析宕機時間前后的系統日志,看看是否有明顯的報錯,比如oom或內核bug;

  如果啟用了kdump,也可以查看宕機生成的crash文件,默認/var/crash目錄下,注意生成時間是否對應;

  查看監控數據,在宕機前有沒有指標異常,比如CPU或內存突增,可能短暫突發上量超過系統承載能力;

  也有可能是硬件故障,可以看下/var/log/dmesg,或者登錄遠控查看系統日志,比如內存故障等,可能需要更換;

4.如何處理

  首先恢復業務、

  分析問題,排查原因、

  制定解決方案、

  完善監控,及時發現、

  復盤總結,避免再次發生,

  經驗積累,知識庫

5.沒有辦法的辦法

  萬能的重啟


所有日志文件

/var/log/messages — 包括整體系統信息,其中也包含系統啟動期間的日志。此外,mail,cron,daemon,kern和auth等內容也記錄在var/log/messages日志中。
/var/log/dmesg — 包含內核緩沖信息(kernel ring buffer)。在系統啟動時,會在屏幕上顯示許多與硬件有關的信息。可以用dmesg查看它們
/var/log/boot.log — 包含系統啟動時的日志。
/var/log/daemon.log — 包含各種系統后台守護進程日志信息。
/var/log/dpkg.log – 包括安裝或dpkg命令清除軟件包的日志。
/var/log/kern.log – 包含內核產生的日志,有助於在定制內核時解決問題。
/var/log/lastlog — 記錄所有用戶的最近信息。這不是一個ASCII文件,因此需要用lastlog命令查看內容。
/var/log/maillog /var/log/mail.log — 包含來着系統運行電子郵件服務器的日志信息。例如,sendmail日志信息就全部送到這個文件中。
/var/log/user.log — 記錄所有等級用戶信息的日志
/var/log/Xorg.x.log — 來自X的日志信息
/var/log/alternatives.log – 更新替代信息都記錄在這個文件中
/var/log/btmp – 記錄所有失敗登錄信息。使用last命令可以查看btmp文件。例如,”last -f /var/log/btmp | more/var/log/cups — 涉及所有打印信息的日志
/var/log/anaconda.log — 在安裝Linux時,所有安裝信息都儲存在這個文件中
/var/log/yum.log — 包含使用yum安裝的軟件包信息
/var/log/cron — 每當cron進程開始一個工作時,就會將相關信息記錄在這個文件中
/var/log/secure — 包含驗證和授權方面信息。例如,sshd會將所有信息記錄(其中包括失敗登錄)在這里
/var/log/wtmp或/var/log/utmp — 包含登錄信息。使用wtmp可以找出誰正在登陸進入系統,誰使用命令顯示這個文件或信息等
/var/log/faillog – 包含用戶登錄失敗信息。此外,錯誤登錄命令也會記錄在本文件中
/var/log/httpd/或/var/log/apache2 — 包含服務器access_log和error_log信息
/var/log/lighttpd/ — 包含light HTTPD的access_log和error_log
/var/log/mail/ – 這個子目錄包含郵件服務器的額外日志
/var/log/prelink/ — 包含.so文件被prelink修改的信息
/var/log/audit/ — 包含被 Linux audit daemon儲存的信息
/var/log/samba/ – 包含由samba存儲的信息
/var/log/sa/ — 包含每日由sysstat軟件包收集的sar文件
/var/log/sssd/ – 用於守護進程安全服務

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM