系統訪問502狀態排查思路
關於502
1、后端服務器異常,直接返回
可能的原因:PHP進程滿,不接受請求
2、響應超時,返回錯誤碼
3、502問題很多時候會反映在服務器某一部分系統性能上,因此如果通過日志解決不了問題時,通過觀察系統性能是一個解決502問題的思路
一些可用於排查問題的LOG
1、access log
2、系統慢查詢 log
3、數據庫 log
結合以上三個 log,基本上可以確定由於程序問題導致的502
一些可用的命令
如果通過以上 log 仍然不能確定502問題的原因
可以通過以下命令,進一步觀察系統狀態來分析原因
系統負載
sar
09:00:01 AM CPU %user %nice %system %iowait %steal %idle
09:10:01 AM all 0.23 0.02 0.08 0.01 0.00 99.66
通過對系統負載的觀察,精確確定某一時間區間,進而根據此時間范圍去查看對應日志,定位問題
查看系統運行時狀態
vmstat 1
procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
r b swpd free buff cache si so bi bo in cs us sy id wa
推薦使用下面這個
dstat
----total-cpu-usage---- -dsk/total- -net/total- ---paging-- ---system--
usr sys idl wai hiq siq| read writ| recv send| in out | int csw
着重觀察磁盤和網絡部分的數據
可以通過此判斷出程序是因為磁盤資源還是網絡資源導致的處理速度下降,從而惡化
查看網絡流量來源
iftop
圖形化的 top
htop
查看多個 log
multitail
查看最后登錄人
last
個人經驗
1、系統swap高:可能存在大量計算,導致內存不足
2、網絡流量高:可能存在大數據量傳輸,通過PV限速
3、CPU wait高:可能存在大量磁盤操作,網絡操作,導致CPU閑置
4、磁盤讀寫高:可能存在大量小數據寫入讀出,影響整體性能,減少讀寫次數,以提高性能
5、某進程CPU使用率高:可能存在不合理的代碼,長時間占用CPU,導致CPU負載高,進程調度受阻
6、如何判斷剩余可用內存:看內存cached,基本上就是還可分配給應用的內存量
7、一些定時任務在某一時刻同時執行,造成堆積,也是導致系統性能大幅下降的原因,需要注意