1. 程式人生 > >線上操作與線上問題排查實戰

線上操作與線上問題排查實戰

研發 寫入 操作 net pad 日誌文件 pst 線程 應該

一、了解機器連接數情況

問題:1.2.3.4的sshd的監聽端口是22,如何統計1.2.3.4的sshd服務各種連接狀態(TIME_WAIT/ CLOSE_WAIT/ ESTABLISHED)的連接數。

參考答案

  • netstat -n | grep 1.2.3.4:22 | awk ‘/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}’

  • netstat -lnpta | grep ssh | egrep “TIME_WAIT | CLOSE_WAIT | ESTABLISHED”

  • n [僅限於阿裏雲]

說明:netstat是追查網絡連接問題常用工具,和grep/awk結合更是神器,當然如果在阿裏雲上,還有更方便的方法。

二、從已經備份好的日誌中查詢數據

問題:從已備份的suyun.2017-06-26.log.bz2日誌中,找出包含關鍵字1.2.3.4的日誌有多少條。

參考答案

  • bzcat suyun.2017-06-26.log.bz2 | grep ‘1.2.3.4‘ | wc -l

  • bzgrep ‘1.2.3.4‘ suyun.2017-06-26.log.bz2 | wc -l

  • less suyun.2017-06-26.log.bz2 | grep ‘10.37.9.11‘ | wc -l

說明:線上日誌文件一般以bz2 壓縮之後保留,如果解壓查詢,非常耗空間與時間,bzcat和bzgrep是研發同學必須掌握的工具。

三、備份服務的技巧

問題:打包備份/opt/web/suyun_web目錄,排除掉目錄中的logs和目錄,打包好的文件存放在/opt/backup目錄下。

參考答案

tar -zcvf /opt/backup/shenjian.tar.gz \

-exclude /opt/web/suyun_web/logs \

/opt/web/suyun_web

說明:這個命令線上應用較為頻繁,在項目需要打包遷移時,常常需要排除掉日誌目錄,exclude是需要掌握的參數。

四、查詢線程數

問題:查詢服務器運行服務的總線程數,當機器線程數超報警閥值時,能快速查出相關進程及線程信息。

參考答案

  • ps -eLf | wc -l

  • pstree -p | wc -l

五、磁盤報警,清空最大文件

問題:找出服務器上,某個正在運行的tomcat產生的大量異常日誌,找出該文件,並釋放空間。不妨設該文件包含log關鍵字,並且大於1G。

參考答案

第一步,找到該文件

  • find / -type f -name "*log*" | xargs ls -lSh | more

  • du -a / | sort -rn | grep log | more

  • find / -name ‘*log*‘ -size +1000M -exec du -h {} \;

第二步,將文件清空

假設找到的文件為a.log

正確的情況方式應該為:echo "">a.log,文件空間會立刻釋放。

很多同學:rm -rf a.log,這樣文件雖然刪除,但是因tomcat服務仍在運行,空間不會立刻釋放,需要重啟tomcat才能將空間釋放。

六、顯示文件,過濾註釋

問題:顯示server.conf 文件,屏蔽掉#號開頭的註釋行

參考答案

  • sed -n ‘/^[#]/!p‘ server.conf

  • sed -e ‘/^#/d‘ server.conf

  • grep -v "^#" server.conf

七、磁盤IO異常排查

問題:磁盤IO異常如何排查,類似寫入慢或當前使用率較高,請查出導致磁盤IO異常高的進程ID。

參考答案

第一步:iotop -o 查看當前正在寫磁盤操作的所有進程ID信息。

第二步:如果此時各項寫入指標都很低,基本沒有大的寫入操作,則需要排查磁盤自身。可以查看系統dmesg或cat /var/log/message 看看是否有相關的磁盤異常報錯,同時可以在寫入慢的磁盤上touch 一個空文件看看,是否磁盤故障導致無法寫入。

線上操作與線上問題排查實戰