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

各項指標的意義如下:
- total:總表示物理內存的大小;
- used:已使用的內存大小;
- free:可用內存大小;
- shared:多個進程共享的內存總額;
- buff/cached:磁盤緩存的大小;
- available:應用程序能使用的物理內存大小。
free與available的區別
free是真實未被使用的物理內存大小,而available是應用程序可用內存大小
available ≈ free + buffer + cache
CPU問題
除了用top命令,我們還可以使用更為直觀的pidstat命令

一般我們關注PID和%CPU兩項指標即可。
磁盤IO異常問題
iotop命令可以用於查看正在寫磁盤的進程ID信息,它可以幫助我們找到導致磁盤IO異常的進程。

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

如果是磁盤寫滿了,按照以下思路找到對應的文件並刪除
- 找出最大的五個目錄
du -hm / --max-depth=1 | sort -nr | head -5
- 找出當前目錄下大於1G的文件
find . -type f -size +1000M
- 假如找到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]}'
結果:

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