服務器問題 排查思路


服務器常見問題排查思路

服務器問題 排查思路

一.盡可能搞清楚問題的前因后果

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的配置也有關系。


免責聲明!

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



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