网络连接
網絡連接狀態:
C: ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?S:
SYN_SEND
SYN_RECV
ESTABLISH
ESTABLISH
?
FIN_WAIT1
CLOSE_WAIT
FIN_WAIT2
LAST_ACK
TIME_WAIT?
CLOSED
?
http交互和上面的圖形其實并不一樣,TIME_WAIT 經常是服務端主動關閉的。
TIME_WAITK可以通過調整內核參數解決。
一直保持在CLOSE_WAIT狀態,其實只有一種情況,就是在對方關閉連接之后服務器程序自己沒有進一步發出ack信號。
大量CLOSE_WAIT的解決辦法總結為一句話那就是:查代碼。
?
查看網絡連接:
netstat -an| awk '/^tcp/ {++S[$NF]} END {for(i in S) print i ,S[i]}'
?
案例一次線上服務器收到zabbix報警:?
web01服務器cpu空閑值小于70%(該機器跑了多個tomcat)
?
?
登錄機器排查:
首先是要top命令查看了一下,發現有個java進程占用了90%的cpu(這臺服務器有多核cpu的)。
找到進程pid通過top -H -p 命令查看了線程情況,發現該進程的所有線程占用cpu多高。
如是通過ps命令找到該服務是一個運行后臺的boss服務。
打開運營后臺發現幾乎處于卡死狀態。
如是用了netstat 命令查看了網絡連接狀態,結果發現大量的CLOSE_WAIT狀態。
如是判斷是開發的代碼有問題,果然排除了代碼后發現了問題,修改了代碼,重啟tomcat。
用netstat再次查看發現大量的LAST_ACK 最后全部關閉,最終恢復正常。
?
?
?
轉載于:https://www.cnblogs.com/fanxuanhui-linux/p/5870171.html
總結
- 上一篇: jude的一些基本用法
- 下一篇: PHP单引号 ' ',没有任何意义,对所