伺服器問題 排查思路

上善若水~小輝發表於2021-05-20

伺服器常見問題排查思路

伺服器問題 排查思路

一.儘可能搞清楚問題的前因後果

1.故障是什麼時候發現的?   
2.故障的表現是什麼?無響應?報錯?
3.最後一次對整個平臺進行更新的內容是什麼(程式碼、伺服器等)

二.當前有誰在,做過什麼操作

1.  w/who   
2. last
3. history

三.現在執行的程式有什麼

1. pstree -a              //以樹狀圖顯示程式間的關係
2. ps -aux
3. netstat  -n -o -a |grep 443 |wc -l     檢視各埠連線數 
   netstat  -n -o -a |grep 80 |wc -l
4.netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'     檢視http的程式數

四.監聽的網路服務

1.  netstat -nalp     
2.netstat -ntlp
3.netstat -nulp
  -n或--numeric 直接使用IP地址,而不通過域名伺服器。
  -a或--all 顯示所有連線中的Socket。
  -l或--listening 顯示監控中的伺服器的Socket。
  -p或--programs 顯示正在使用Socket的程式識別碼和程式名稱。
  -t或--tcp 顯示TCP傳輸協議的連線狀況。
  -u或--udp 顯示UDP傳輸協議的連線狀況。

五. 記憶體 CPU 磁碟空間
1.記憶體
(1) free -m

img

第一行 :    記憶體總數   已使用記憶體數   空閒記憶體數  廢棄記憶體數   快取記憶體數     快取記憶體數
第二行:    
- buffers/cache:  已使用記憶體數 (指的第一行中的used – buffers – cached)
+ buffers/cache:  空閒記憶體數(指的第一行中的free + buffers + cached)       
第三行: 指交換分割槽
Linux的Swap類似於Windows的虛擬記憶體,就是把一部分硬碟空間虛擬成記憶體使用,用來解決記憶體容量不足的問題。如果有使用到Swap,說明伺服器該升級配置了。
2.CPU
(1)uptime

img

系統時間  系統執行時間  已登入使用者的數量  系統的平均負載量:  過去一分鐘  五分鐘 十五分鐘
 注:有一種說法,當load avarage <3 系統良好,大於5 則有嚴重的效能問題

(2)top

image-20210517132222558

第一行同uptime

第二行為程式的資訊
總程式數  正在執行的程式數   睡眠程式數    停止程式數   殭屍程式數

第三行為CPU資訊   
us: 使用者空間佔用CPU百分比       
sy  核心空間佔用CPU百分比
ni  使用者程式空間內改變過優先順序的程式佔用CPU百分比
id  空閒CPU百分比           //比較重要
wa  等待輸入輸出的CPU時間百分比       

第四、五行為記憶體資訊 

Mem  :  8169876  k  total  ,  7686472  k  used  ,  483404  k  free  ,  35272  k  buffers
實體記憶體總量       使用的實體記憶體總量    空閒記憶體總量         用作核心快取的記憶體量

Swap  :  4096532  k  total  ,  160  k  used  ,  4096372  k  free  ,  2477532  k  cached
交換分割槽總量        使用的交換區總量       空閒交換區總量      緩衝的交換區總量
3.磁碟空間
 (1) df   -h       顯示目前在Linux系統上的檔案系統的磁碟使用情況統計

image-20210517132259499

檔案系統的名稱   總記憶體   使用中的記憶體   可使用的記憶體    使用的記憶體佔總記憶體的百分比  掛載點
 (2) du  -sh*     檢視當前資料夾下所有目錄大小

image-20210517132338539

六.io效能/

1.iotop         

image-20210517132416572

​ 讀取速度 寫入速度

2. dstat --top-mem --top-io --top-cpu           檢視當前佔用記憶體、io、CPU最高的程式資訊

image-20210517132446557

一、解決500錯誤:
1、500錯誤指的是伺服器內部錯誤,也就是伺服器遇到意外情況,而無法履行請求。
2、500錯誤一般有幾種情況:
(1)web指令碼錯誤,如php語法錯誤,lua語法錯誤等。
(2)訪問量大的時候,由於系統資源限制,而不能開啟過多的檔案
3、一般分析思路:
(1)檢視nginx error log ,檢視php error log
(2)如果是too many open files,修改nginx的worker_rlimit_nofile引數,使用ulimit檢視系統開啟檔案限制,修改/etc/security/limits.conf
(3)如果是指令碼的問題,則需要修復指令碼錯誤,並優化程式碼
(4)各種優化都做好,還是出現too many open files,那就要考慮做負載均衡,把流量分散到不同伺服器上去了

二、解決502,504錯誤
1、使用nginx代理,而後端伺服器發生故障;或者php-cgi程式數不夠用;php執行時間長,或者是php-cgi程式死掉;已經fastCGI使用情況等都會導致502、504。
2、502 是指請求的php-fpm已經執行,但是由於某種原因而沒有執行完畢,最終導致php-fpm程式終止。
一般來說,與php-fpm.conf的設定有關,也與php的執行程式效能有關,網站的訪問量大,而php-cgi的程式數偏少。針對這種情況的502錯誤,只需增加php-cgi的程式數。
具體就是修改/usr/local/php/etc/php-fpm.conf檔案,將其中的max_children值適當增加。
這個資料要依據你的VPS或獨立伺服器的配置進行設定。一般一個php-cgi程式佔20M記憶體,你可以自己計算下,適量增多。
/etc/init.d/php-fpm restart 然後重啟一下.
3、504 表示超時,也就是客戶端所發出的請求沒有到達閘道器,請求沒有到可以執行的php-fpm。與nginx.conf的配置也有關係。

相關文章