清除陷入close_wait的程序,而不清除父程序的方法,理論上來說是可行的,但是有可能引起相關元件不能正確顯示狀態資料。比如,使用apache+mod_jk的情況,殺掉相應程序後,mod_jk的狀態監控不能正確顯示當前apache和tomcat之間的連線數。
具體做法,就是先用netstat命令列出在close_wait的程序號,然後殺掉這些程序。可以用一條命令完成。
netstat -nap |grep :8009|grep close_wait | awk ''|awk -f"\/" '' |awk '!a[$1]++' |xargs kill
解釋一下:
使用netstat列出所有埠資訊,包含程序資訊,
過濾出8009埠的,
過濾出出狀態是close_wait的,
取結果的第7列,就是程序資訊,格式是這樣的12568/httpd,
所以要去掉 /httpd 這部分,只留下程序號,
然後去掉重複的程序號,
最後用xargs帶入kill命令殺掉相應的程序。
close wait生成的原因
close wait狀態的生成原因 首先我們知道,如果我們的client程式處於close wait狀態的話,說明套接字是被動關閉的!因為如果是server端主動斷掉當前連線的話,那麼雙方關閉這個tcp連線共需要四個packet server fin client server ack client...
CLOSE WAIT狀態的生成原因
關閉socket分為主動關閉 active closure 和被動關閉 passive closure 兩種情況。前者是指有本地主機主動發起的關閉 而後者則是指本地主機檢測到遠端主機發起關閉之後,作出回應,從而關閉整個連線。其狀態圖如下圖所示 起初每個socket都是closed狀態,當客戶端初使化...
CLOSE WAIT狀態的生成原因
close wait狀態的生成原因 首先我們知道,如果我們的client程式處於close wait狀態的話,說明套接字是被動關閉的!因為如果是server端主動斷掉當前連線的話,那麼雙方關閉這個tcp連線共需要四個packet server fin client server ack client...