咨詢電(diàn)話(huà):023-88959644    24小(xiǎo)時(shí)服務熱線:400-023-8809
NEWS CENTER ·
新聞動态
關注中技(jì)互聯 關注前沿

服務器(qì)出現批量TIME_WAIT的解決方法

發表日期:2013-05-14    文章編輯:張未    浏覽次數(shù):32    标簽:

www.zjcoo.com

   有(yǒu)時(shí)候我們會(huì)發現服務器(qì)(windows)很(hěn)卡,于是重啓了下服務器(qì),進入系統後,沒過一會(huì)問題依舊(jiù),查看了下系統進程,發現mysql占用率達到99%,可(kě)以肯定的是mysql連接出現了問題:

  netstat -an

  192.168.12.13:3306 192.168.12.12:30443 TIME_WAIT

  192.168.12.13:3306 192.168.12.12:30444 TIME_WAIT

  192.168.12.13:3306 192.168.12.12:30445 TIME_WAIT

  192.168.12.13:3306 192.168.12.12:30446 TIME_WAIT

  192.168.12.13:3306 192.168.12.12:30447 TIME_WAIT

  192.168.12.13:3306 192.168.12.12:30448 TIME_WAIT

  192.168.12.13:3306 192.168.12.12:30449 TIME_WAIT

  192.168.12.13:3306 192.168.12.12:30450 TIME_WAIT

  192.168.12.13:3306 192.168.12.12:30451 TIME_WAIT

  192.168.12.13:3306 192.168.12.12:30452 TIME_WAIT

  ... ...

  根據TCP協議定義的3次握手斷開(kāi)連接規定,發起socket主動關閉的一方 socket将進入TIME_WAIT狀态,TIME_WAIT狀态将持續2個(gè)MSL(Max Segment Lifetime),在Windows下默認為(wèi)4分鍾,即240秒(miǎo),TIME_WAIT狀态下的socket不能被回收使用. 具體(tǐ)現象是對于一個(gè)處理(lǐ)大(dà)量短(duǎn)連接的服務器(qì),如果是由服務器(qì)主動關閉客戶端的連接,将導緻服務器(qì)端存在大(dà)量的處于TIME_WAIT狀态的socket, 甚至比處于Established狀态下的socket多(duō)的多(duō),嚴重影(yǐng)響服務器(qì)的處理(lǐ)能力,甚至耗盡可(kě)用的socket,停止服務. TIME_WAIT是TCP協議用以保證被重新分配的socket不會(huì)受到之前殘留的延遲重發報文影(yǐng)響的機制(zhì),是必要的邏輯保證.

  在HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters,添加名為(wèi)TcpTimedWaitDelay的

  DWORD鍵,設置為(wèi)60,以縮短(duǎn)TIME_WAIT的等待時(shí)間(jiān)

  登陸到web服務器(qì)(linux):

  netstat -ae |grep mysql

  tcp 0 0 aaaa:53045 192.168.12.13:mysql TIME_WAIT root 0

  tcp 0 0 aaaa:53044 192.168.12.13:mysql TIME_WAIT root 0

  tcp 0 0 aaaa:53051 192.168.12.13:mysql TIME_WAIT root 0

  tcp 0 0 aaaa:53050 192.168.12.13:mysql TIME_WAIT root 0

  tcp 0 0 aaaa:53049 192.168.12.13:mysql TIME_WAIT root 0

  tcp 0 0 aaaa:53048 192.168.12.13:mysql TIME_WAIT root 0

  tcp 0 0 aaaa:53055 192.168.12.13:mysql TIME_WAIT root 0

  tcp 0 0 aaaa:53054 192.168.12.13:mysql TIME_WAIT root 0

  tcp 0 0 aaaa:53053 192.168.12.13:mysql TIME_WAIT root 0

  tcp 0 0 aaaa:53052 192.168.12.13:mysql TIME_WAIT root 0

  tcp 0 0 aaaa:53059 192.168.12.13:mysql TIME_WAIT root 0

  tcp 0 0 aaaa:53058 192.168.12.13:mysql TIME_WAIT root 0

  tcp 0 0 aaaa:53057 192.168.12.13:mysql TIME_WAIT root 0

  tcp 0 0 aaaa:53056 192.168.12.13:mysql TIME_WAIT root 0

  tcp 0 0 aaaa:53063 192.168.12.13:mysql TIME_WAIT root 0

  tcp 0 0 aaaa:53062 192.168.12.13:mysql TIME_WAIT root 0

  tcp 0 0 aaaa:53061 192.168.12.13:mysql TIME_WAIT root 0

  tcp 0 0 aaaa:53060 192.168.12.3:mysql TIME_WAIT root 0

  tcp 0 0 aaaa:53067 192.168.12.13:mysql TIME_WAIT root 0

  tcp 0 0 aaaa:53066 192.168.12.13:mysql TIME_WAIT root 0

  tcp 0 0 aaaa:53065 192.168.12.13:mysql TIME_WAIT root 0

  tcp 0 0 aaaa:53064 192.168.12.13:mysql TIME_WAIT root 0

  tcp 0 0 aaaa53071 192.168.12.13:mysql TIME_WAIT root 0

  tcp 0 0 aaaa:53070 192.168.12.13:mysql TIME_WAIT root 0

  tcp 0 0 aaaa:53069 192.168.12.13:mysql TIME_WAIT root 0

  發現系統存在大(dà)量TIME_WAIT狀态的連接,通(tōng)過調整內(nèi)核參數(shù)解決,

  vi /etc/sysctl.conf

  編輯文件,加入以下內(nèi)容:

  net.ipv4.tcp_syncookies = 1

  net.ipv4.tcp_tw_reuse = 1

  net.ipv4.tcp_tw_recycle = 1

  net.ipv4.tcp_fin_timeout = 30

  然後執行(xíng) /sbin/sysctl -p 讓參數(shù)生(shēng)效。

  net.ipv4.tcp_syncookies = 1 表示開(kāi)啓SYN Cookies。當出現SYN等待隊列溢出時(shí),啓用cookies來(lái)處理(lǐ),可(kě)防範少(shǎo)量SYN攻擊,默認為(wèi)0,表示關閉;

  net.ipv4.tcp_tw_reuse = 1 表示開(kāi)啓重用。允許将TIME-WAIT sockets重新用于新的TCP連接,默認為(wèi)0,表示關閉;

  net.ipv4.tcp_tw_recycle = 1 表示開(kāi)啓TCP連接中TIME-WAIT sockets的快速回收,默認為(wèi)0,表示關閉。

  net.ipv4.tcp_fin_timeout 修改系統默認的 TIMEOUT 時(shí)間(jiān)

  修改之後,再用

  netstat -ae|grep mysql

  tcp 0 0 aaaa:50408 192.168.12.13:mysql ESTABLISHED nobody 3224651

  tcp 0 0 aaaa:50417 192.168.12.13:mysql ESTABLISHED nobody 3224673

  tcp 0 0 aaaa:50419 192.168.12.13:mysql ESTABLISHED nobody 3224675

  發現大(dà)量的TIME_WAIT 已不存在,mysql進程的占用率很(hěn)快就降下來(lái)的,各網站(zhàn)訪問正常!!

  但(dàn)是這個(gè)方法隻是緩解的辦法,真正的原因還(hái)要去尋找到底是系統內(nèi)的哪一個(gè)文件或者軟件出了差錯導緻這樣的錯誤發生(shēng),不能光靠着這一個(gè)辦法維持我們的服務器(qì)正常,還(hái)需要各位站(zhàn)長從方方面面考慮以保服務器(qì)的周全。

重慶中技互聯網信息咨詢有限公司 www.zjcoo.com

如沒特殊注明(míng),文章均為(wèi)中技(jì)互聯原創,轉載請(qǐng)注明(míng)來(lái)自www.zjcoo.com
相關新聞

CopyrightZJCOO technology Co., LTD. All Rights Reserved.    

渝ICP 備11003429号

  • qq客服
  • 公衆号
  • 手機版
  • 新浪微博