Linux服務器問題排查思路及常用命令


內存問題

free命令用於查看內存的使用情況,在Linux上,很多人會用top顯示系統內存,但是不夠直觀,top通常我們用於查看CPU的占用率。Linux下查看內容的專用工具是free命令。

Linux服務器問題排查思路及常用命令

各項指標的意義如下:

  • total:總表示物理內存的大小;
  • used:已使用的內存大小;
  • free:可用內存大小;
  • shared:多個進程共享的內存總額;
  • buff/cached:磁盤緩存的大小;
  • available:應用程序能使用的物理內存大小。

free與available的區別

free是真實未被使用的物理內存大小,而available是應用程序可用內存大小

available ≈ free + buffer + cache

CPU問題

除了用top命令,我們還可以使用更為直觀的pidstat命令

 

Linux服務器問題排查思路及常用命令

一般我們關注PID和%CPU兩項指標即可。

磁盤IO異常問題

iotop命令可以用於查看正在寫磁盤的進程ID信息,它可以幫助我們找到導致磁盤IO異常的進程。

Linux服務器問題排查思路及常用命令

如果各項指標都很低,那么則可能是系統磁盤問題,可以用dmesg命令查看系統信息:

Linux服務器問題排查思路及常用命令

如果是磁盤寫滿了,按照以下思路找到對應的文件並刪除

  1. 找出最大的五個目錄
du -hm / --max-depth=1 | sort -nr | head -5
  1. 找出當前目錄下大於1G的文件
find . -type f -size +1000M
  1. 假如找到nginx日志access.log,那么我們可能得清空對應的日志文件
echo "">access.log.log

很多人的第一反應是用rm命令

rm -rf access.log

雖然rm可以刪除文件,但是有時空間不會被立即釋放,比如該例子,nginx服務仍在運行,除非重啟該服務。

查看壓縮好的備份日志

bzgrep ‘192.168.1.100’ access-2020-04-06.log

為什么要用bzgrep,因為如果解壓后再查看會耗費很長的時間。

查看網站並發連接數

比如查看Nginx的並發連接情況,以便我們了解網站的負載情況。

執行以下命令:

netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'

結果:

Linux服務器問題排查思路及常用命令

ESTABLISHED的數量就是當前並發連接數。

訪問量統計

很多時候網站會遭遇惡意攻擊,我們需要找到出問題的IP進行封殺。

查詢訪問最頻繁的IP

awk '{print $1}' access-2020-04-06.log | sort | uniq -c | sort -n -k 1 -r | more

其他需求

如根據訪問IP統計UV

awk '{print $1}'  access-2020-04-06.log | sort | uniq -c | wc -l

 

 




免責聲明!

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



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