亚洲一区精品自拍_2021年国内精品久久_男同十八禁gv在线观看_免费观看a级性爱黄片

Article / 文章中心

存在大量處于TIME_WAIT狀態(tài)的連接

發(fā)布時間:2021-04-19 點擊數(shù):703
問題現(xiàn)象

云服務器中存在大量處于TIME_WAIT狀態(tài)的連接。

原因分析

首先通過調(diào)用close()發(fā)起主動關閉,在發(fā)送最后一個ACK之后會進入time_wait的狀態(tài),該發(fā)送方會保持2MSL時間之后才會回到初始狀態(tài)。MSL值是數(shù)據(jù)包在網(wǎng)絡中的最大生存時間。產(chǎn)生這種結(jié)果使得這個TCP連接在2MSL連接等待期間,定義這個連接的四元組(客戶端IP地址和端口,服務端IP地址和端口號)不能被使用。

解決方法

通過netstat或ss命令,可以看到大量處于TIME_WAIT狀態(tài)的連接。

  1. 執(zhí)行以下命令,查看TIME_WAIT狀態(tài)的連接數(shù)量。
    netstat -n | awk '/^tcp/ {++y[$NF]} END {for(w in y) print w, y[w]}'
    說明:或者執(zhí)行ss -tan state time-wait命令,查看TIME_WAIT連接信息。
  2. 執(zhí)行以下命令,編輯系統(tǒng)內(nèi)核配置。
    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
    警告:對于服務端來說,在NAT環(huán)境中,開啟net.ipv4.tcp_tw_recycle = 1配置可能導致校驗時間戳遞增,從而影響業(yè)務,不建議開啟該功能。關于這四個內(nèi)核參數(shù)的更多介紹,請參考以下內(nèi)容:
    • net.ipv4.tcp_syncookies=1:開啟SYN的cookies,當出現(xiàn)SYN等待隊列溢出時,啟用cookies進行處理。
    • net.ipv4.tcp_tw_reuse=1:允許將TIME-WAIT的socket重新用于新的TCP連接。如果新請求的時間戳,比存儲的時間戳更大,則系統(tǒng)將會從TIME_WAIT狀態(tài)的存活連接中選取一個,重新分配給新的請求連接。
    • net.ipv4.tcp_tw_recycle=1:開啟TCP連接中TIME-WAIT的sockets快速回收功能。需要注意的是,該機制也依賴時間戳選項,系統(tǒng)默認開啟tcp_timestamps機制,而當系統(tǒng)中的tcp_timestamps和tcp_tw_recycle機制同時開啟時,會激活TCP的一種行為,即緩存每個連接最新的時間戳,若后續(xù)的請求中時間戳小于緩存的時間戳時,該請求會被視為無效,導致數(shù)據(jù)包會被丟棄。特別是作為負載均衡服務器的場景,不同客戶端請求經(jīng)過負載均衡服務器的轉(zhuǎn)發(fā),可能被認為是同一個連接,若客戶端的時間不一致,對于后端服務器來說,會發(fā)生時間戳錯亂的情況,因此會導致數(shù)據(jù)包丟失,從而影響業(yè)務。
    • net.ipv4.tcp_fin_timeout=30:如果socket由服務端要求關閉,則該參數(shù)決定了保持在FIN-WAIT-2狀態(tài)的時間。
  3. 執(zhí)行命令以下命令,使配置生效。
    /sbin/sysctl -p 
  4. TIME_WAIT狀態(tài)的連接較多時,會導致各種問題,除了直觀的減少TIME_WAIT狀態(tài)的連接,也可以通過擴大端口范圍和對TIME_WAIT的bucket進行擴容等手段優(yōu)化系統(tǒng)性能
    如果您有其他問題,可以聯(lián)系北京志遠天成阿里云代理商,為您提供一對一專業(yè)全面的技術服務,同時新老阿里云會員,均可享受我公司代理商價格,歡迎咨詢歡迎咨詢.gif
    。