服務器異常排查步驟

服務器異常排查步驟

問題說明

朋友是兼職程序員,接手了一個科普網站的項目,在上線的時候遇到了80端口應用啓動一定時間(兩小時)後不能正常訪問的現象,啓動時一切正常。

由於客戶的服務器不能直接訪問,無法直接排查問題,所以寫了個簡單的步驟給朋友參考。寫完之後發現這個排查思路其實是挺普遍的排查思路,遇到應用和服務器問題時都可以參考這個步驟逐個環節去排查問題,當然,如果問題相對複雜,可能還是需要上手查看更多的內容才能確認,但是排查相對簡單的問題或者給萌新一個解決問題的思路,這個步驟還是有一點參考價值的,所以記錄一下。

前置

使用命令啓動服務,確保應用日誌可以正常打印

當異常發生時

使用命令tail -f log.file(日誌開啓滾動顯示模式,,命令行不斷顯示最新產生的日誌
按住enter,直到當前屏幕清空(區分最新的日誌

在瀏覽器訪問網頁,查看此時是否有後臺日志(需要了解的問題1),觀察前端瀏覽器給出的反應(需要了解的問題2,404、500、無響應)

根據問題1

如果後臺沒有日誌,在另一個命令行頁面執行命令查看端口是否執行: ./run.sh status(正在運行:dzdckp-latest.jar running,Pid is XXXXX,已經停止:dzdckp-latest.jar not running(需要了解的問題3)

根據問題2

如果瀏覽器顯示無響應,那麼推測網絡中斷或者後臺服務異常,如果顯示404、500或者其他狀態碼,證明當前應用正常,但是無法跳轉到正確的頁面,記錄問題2的情況

根據問題3

如果應用正在運行,觀察日誌是否有日誌輸出,如果有(情況1),根據輸出的內容判斷;如果沒有,判斷網絡中斷,導致請求不能被正常解析(情況2)

如果應用沒有運行,推測服務異常關閉,可能由於應用自身的問題或者服務器上的配置導致當前應用的異常(情況3)

情況1

應用正在運行而無法接受外部訪問,首先嚐試確認是否爲網絡異常。從當前服務器嘗試訪問當前應用端口:

  • ping xx.xx.x.x (將瀏覽器的地址貼過來),如果有數據,證明當前服務器網絡可訪問
  • telnet xx.xx.xx.xx 80 如果正常,證明當前端口正常開放
  • curl xx.xx.xx.xx:80 如果輸出的是網頁信息,證明服務正常

從另一臺服務器重複上述操作,再次確認外部網絡-當前服務器的網絡情況

情況2

嘗試確認是否當前服務器和服務器端口到外部網絡的通信中斷

  • curl www.baidu.com 成功證明當前服務器的網絡通信正常

如果情況1和情況2的驗證情況都正常,則證明當前服務器的網絡沒有發生異常

情況3

應用異常關閉,首先查看關閉前有無錯誤日誌

  • 日誌文件可以下載下來發給我

如果以上都沒有發現問題,繼續嘗試方向爲:

  • 修改啓動命令增加JVM參數和JVM日誌打印,捕捉系統崩潰時的JVM情況
  • 增加定時任務腳本檢測任務的運行情況,每5秒左右執行一次,如果發現關閉則立刻重啓,或者每小時定時重啓任務(可以臨時解決問題,但是重啓可能會導致需要重新登陸的問題)
  • 對服務器配置的詳細排查,應用情況、定時任務情況,網絡端口配置等
發佈了34 篇原創文章 · 獲贊 17 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章