瘋狂

          STANDING ON THE SHOULDERS OF GIANTS
          posts - 481, comments - 486, trackbacks - 0, articles - 1
            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

          QQ 導致mysql 服務無法啟動

          Posted on 2010-09-06 10:59 瘋狂 閱讀(2035) 評論(0)  編輯  收藏 所屬分類: java 、java性能
             今天啟動mysql的時候,發現一起無法啟動,然后就去檢查3306是否被占用,結果使用netstat -ano 一看如下:


          結果一看竟然被qq進程占用著,并且處于close_wait狀態。
          處理方法:直接干掉qq進程,然后啟動mysql即可。

          以下是關于tcp 狀態一些介紹 供大家參考:
           Close_Wait狀態解釋

          CLOSE_WAIT狀態的生成原因
          通過TCP的狀態圖我們可以看出只有被動關閉的一端才有CLOSE_WAIT狀態,當收到Fin并發送了Ack后
          服務器狀態就變成了CLOSE_WAIT狀態,如果我們的服務器一直處于CLOSE_WAIT狀態的話,說明套接字是被動關閉的!,并且沒有發送Fin信令,原因往往是沒有調用TCP的CloseSocket。

          解決CLOSE_WAIT的方法:
          1 一般原因都是TCP連接沒有調用關閉方法。需要應用來處理網絡鏈接關閉。
          2 對于Web請求出現這個原因,經常是因為Response的BodyStream沒有調用Close.
          比如Widnows下:
          使用HttpWebRequest 一定要保證GetRequestStream和GetResponse對象關閉,否則容易造成連接處于CLOSE_WAIT狀態
          3 TCP的KeepLive功能,可以讓操作系統替我們自動清理掉CLOSE_WAIT的連接。
          但是KeepLive在Windows操作系統下默認是7200秒,也就是2個小時才清理一次。往往滿足不了要求。可以調小該數值。
          Windows下的調整方法為
          HKEY_LOCAL_MACHINE"CurrentControlSet"Services"Tcpip"Parameters下的以下三個參數:
          KeepAliveInterval,設置其值為1000
          KeepAliveTime,設置其值為300000(單位為毫秒,300000代表5分鐘)
          TcpMaxDataRetransmissions,設置其值為5

          Close_Wait引發的問題:
          Close_Wait會占用一個連接,網絡可用連接小。數量過多,可能會引起網絡性能下降,并占用系統非換頁內存。 尤其是在有連接池的情況下(比如HttpRequest)
          會耗盡連接池的網絡連接數,導致無法建立網絡連接

          --------------------------------------------
          TCP狀態轉移要點
              TCP協議規定,對于已經建立的連接,網絡雙方要進行四次握手才能成功斷開連接,如果缺少了其中某個步驟,將會使連接處于假死狀態,連接本身占用的資源不會被釋放。網絡服務器程序要同時管理大量連接,所以很有必要保證無用連接完全斷開,否則大量僵死的連接會浪費許多服務器資源。在眾多TCP狀態中,最值得注意的狀態有兩個:CLOSE_WAIT和TIME_WAIT。  

          1、LISTENING狀態
            FTP服務啟動后首先處于偵聽(LISTENING)狀態。
          2、ESTABLISHED狀態
            ESTABLISHED的意思是建立連接。表示兩臺機器正在通信。
          3、CLOSE_WAIT
              對方主動關閉連接或者網絡異常導致連接中斷,這時我方的狀態會變成CLOSE_WAIT 此時我方要調用close()來使得連接正確關閉
          4、TIME_WAIT
              我方主動調用close()斷開連接,收到對方確認后狀態變為TIME_WAIT。TCP協議規定TIME_WAIT狀態會一直持續2MSL(即兩倍的分段最大生存期),以此來確保舊的連接狀態不會對新連接產生影響。處于TIME_WAIT狀態的連接占用的資源不會被內核釋放,所以作為服務器,在可能的情況下,盡量不要主動斷開連接,以減少TIME_WAIT狀態造成的資源浪費。
              目前有一種避免TIME_WAIT資源浪費的方法,就是關閉socket的LINGER選項。但這種做法是TCP協議不推薦使用的,在某些情況下這個操作可能會帶來錯誤。

          詳細一點的文檔:
          http://apps.hi.baidu.com/share/detail/10908121
          主站蜘蛛池模板: 福海县| 蒙阴县| 屏东市| 永城市| 云安县| 鸡西市| 礼泉县| 集贤县| 辰溪县| 承德市| 桂东县| 宜州市| 山西省| 中方县| 景东| 凌源市| 海门市| 鄄城县| 边坝县| 集贤县| 萝北县| 海兴县| 中西区| 正阳县| 惠来县| 利辛县| 上高县| 溧阳市| 宽甸| 赤壁市| 桓台县| 南涧| 祁阳县| 克什克腾旗| 秭归县| 腾冲县| 武川县| 乌鲁木齐县| 宜兴市| 宜宾市| 墨竹工卡县|