結果一看竟然被qq進程占用著,并且處于close_wait狀態(tài)。
處理方法:直接干掉qq進程,然后啟動mysql即可。
以下是關于tcp 狀態(tài)一些介紹 供大家參考:
Close_Wait狀態(tài)解釋
CLOSE_WAIT狀態(tài)的生成原因
通過TCP的狀態(tài)圖我們可以看出只有被動關閉的一端才有CLOSE_WAIT狀態(tài),當收到Fin并發(fā)送了Ack后
服務器狀態(tài)就變成了CLOSE_WAIT狀態(tài),如果我們的服務器一直處于CLOSE_WAIT狀態(tài)的話,說明套接字是被動關閉的!,并且沒有發(fā)送Fin信令,原因往往是沒有調(diào)用TCP的CloseSocket。
解決CLOSE_WAIT的方法:
1 一般原因都是TCP連接沒有調(diào)用關閉方法。需要應用來處理網(wǎng)絡鏈接關閉。
2 對于Web請求出現(xiàn)這個原因,經(jīng)常是因為Response的BodyStream沒有調(diào)用Close.
比如Widnows下:
使用HttpWebRequest 一定要保證GetRequestStream和GetResponse對象關閉,否則容易造成連接處于CLOSE_WAIT狀態(tài)
3 TCP的KeepLive功能,可以讓操作系統(tǒng)替我們自動清理掉CLOSE_WAIT的連接。
但是KeepLive在Windows操作系統(tǒng)下默認是7200秒,也就是2個小時才清理一次。往往滿足不了要求。可以調(diào)小該數(shù)值。
Windows下的調(diào)整方法為
HKEY_LOCAL_MACHINE"CurrentControlSet"Services"Tcpip"Parameters下的以下三個參數(shù):
KeepAliveInterval,設置其值為1000
KeepAliveTime,設置其值為300000(單位為毫秒,300000代表5分鐘)
TcpMaxDataRetransmissions,設置其值為5
Close_Wait引發(fā)的問題:
Close_Wait會占用一個連接,網(wǎng)絡可用連接小。數(shù)量過多,可能會引起網(wǎng)絡性能下降,并占用系統(tǒng)非換頁內(nèi)存。 尤其是在有連接池的情況下(比如HttpRequest)
會耗盡連接池的網(wǎng)絡連接數(shù),導致無法建立網(wǎng)絡連接
TCP狀態(tài)轉移要點
TCP協(xié)議規(guī)定,對于已經(jīng)建立的連接,網(wǎng)絡雙方要進行四次握手才能成功斷開連接,如果缺少了其中某個步驟,將會使連接處于假死狀態(tài),連接本身占用的資源不會被釋放。網(wǎng)絡服務器程序要同時管理大量連接,所以很有必要保證無用連接完全斷開,否則大量僵死的連接會浪費許多服務器資源。在眾多TCP狀態(tài)中,最值得注意的狀態(tài)有兩個:CLOSE_WAIT和TIME_WAIT。
1、LISTENING狀態(tài)
FTP服務啟動后首先處于偵聽(LISTENING)狀態(tài)。
2、ESTABLISHED狀態(tài)
ESTABLISHED的意思是建立連接。表示兩臺機器正在通信。
3、CLOSE_WAIT
對方主動關閉連接或者網(wǎng)絡異常導致連接中斷,這時我方的狀態(tài)會變成CLOSE_WAIT 此時我方要調(diào)用close()來使得連接正確關閉
4、TIME_WAIT
我方主動調(diào)用close()斷開連接,收到對方確認后狀態(tài)變?yōu)門IME_WAIT。TCP協(xié)議規(guī)定TIME_WAIT狀態(tài)會一直持續(xù)2MSL(即兩倍的分段最大生存期),以此來確保舊的連接狀態(tài)不會對新連接產(chǎn)生影響。處于TIME_WAIT狀態(tài)的連接占用的資源不會被內(nèi)核釋放,所以作為服務器,在可能的情況下,盡量不要主動斷開連接,以減少TIME_WAIT狀態(tài)造成的資源浪費。
目前有一種避免TIME_WAIT資源浪費的方法,就是關閉socket的LINGER選項。但這種做法是TCP協(xié)議不推薦使用的,在某些情況下這個操作可能會帶來錯誤。
詳細一點的文檔:
http://apps.hi.baidu.com/share/detail/10908121