作為一名合格的開(kāi)發(fā)人員,特別是做后端的同學(xué),經(jīng)常會(huì)遇到各種各樣的問(wèn)題。
內(nèi)存問(wèn)題
free命令用于查看內(nèi)存的使用情況,在linux上,很多人會(huì)用top顯示系統(tǒng)內(nèi)存,但是不夠直觀,top通常我們用于查看CPU的占用率。Linux下查看內(nèi)容的專用工具是free命令。
各項(xiàng)指標(biāo)的意義如下:
- total:總表示物理內(nèi)存的大小;
- used:已使用的內(nèi)存大小;
- free:可用內(nèi)存大小;
- shared:多個(gè)進(jìn)程共享的內(nèi)存總額;
- buff/cached:磁盤(pán)緩存的大小;
- available:應(yīng)用程序能使用的物理內(nèi)存大小。
free與available的區(qū)別
free是真實(shí)未被使用的物理內(nèi)存大小,而available是應(yīng)用程序可用內(nèi)存大小
available ≈ free + buffer + cache
CPU問(wèn)題
除了用top命令,我們還可以使用更為直觀的pidstat命令
一般我們關(guān)注PID和%CPU兩項(xiàng)指標(biāo)即可。
磁盤(pán)IO異常問(wèn)題
iotop命令可以用于查看正在寫(xiě)磁盤(pán)的進(jìn)程ID信息,它可以幫助我們找到導(dǎo)致磁盤(pán)IO異常的進(jìn)程。
如果各項(xiàng)指標(biāo)都很低,那么則可能是系統(tǒng)磁盤(pán)問(wèn)題,可以用dmesg命令查看系統(tǒng)信息:
如果是磁盤(pán)寫(xiě)滿了,按照以下思路找到對(duì)應(yīng)的文件并刪除
- 找出最大的五個(gè)目錄
du -hm / --max-depth=1 | sort -nr | head -5
- 找出當(dāng)前目錄下大于1G的文件
find . -type f -size +1000M
- 假如找到Nginx日志access.log,那么我們可能得清空對(duì)應(yīng)的日志文件
echo "">access.log.log
很多人的第一反應(yīng)是用rm命令
rm -rf access.log
雖然rm可以刪除文件,但是有時(shí)空間不會(huì)被立即釋放,比如該例子,nginx服務(wù)仍在運(yùn)行,除非重啟該服務(wù)。
查看壓縮好的備份日志
bzgrep ‘192.168.1.100’ access-2020-04-06.log
為什么要用bzgrep,因?yàn)槿绻鈮汉笤俨榭磿?huì)耗費(fèi)很長(zhǎng)的時(shí)間。
查看網(wǎng)站并發(fā)連接數(shù)
比如查看Nginx的并發(fā)連接情況,以便我們了解網(wǎng)站的負(fù)載情況。
執(zhí)行以下命令:
netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
結(jié)果:
ESTABLISHED的數(shù)量就是當(dāng)前并發(fā)連接數(shù)。
訪問(wèn)量統(tǒng)計(jì)
很多時(shí)候網(wǎng)站會(huì)遭遇惡意攻擊,我們需要找到出問(wèn)題的IP進(jìn)行封殺。
查詢?cè)L問(wèn)最頻繁的IP
awk '{print $1}' access-2020-04-06.log | sort | uniq -c | sort -n -k 1 -r | more
其他需求
如根據(jù)訪問(wèn)IP統(tǒng)計(jì)UV
awk '{print $1}' access-2020-04-06.log | sort | uniq -c | wc -l
PS:如果讀完本文對(duì)您有所幫助,不妨動(dòng)動(dòng)小手follow一下,后續(xù)文章更精彩!