如何修改Linux核心參數,減少TCP串連中的TIME-WAIT?,linuxtime-wait

來源:互聯網
上載者:User

如何修改Linux核心參數,減少TCP串連中的TIME-WAIT?,linuxtime-wait

一、基本設定

如果python中socket 綁定的地址正在使用,往往會出現錯誤,

在linux下:

則會顯示“ socket.error: [Errno 98] Address already in use”

在windows下:

則會顯示 “socket.error: [Errno 10048] 通常每個通訊端地址(協議/網路地址/連接埠)只允許使用一次”

這是因為socket預設不支援地址複用,如果要複用需要顯示設定,即在綁定前調用setsockop函數t讓通訊端允許地址重用:socket.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1)

例如:

[python] view plain copy

self.recSocket=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)self.recSocket.settimeout(CHECK_TIMEOUT)

self.recSocket.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1)self.recSocket.bind(('',UDP_PORT))

二、進一步設定(並發串連量大需要設定)

上述是在程式中設定重用,此外如果並發串連請求過多的時候,即短時間內串連請求很多,系統自動釋放已佔用連接埠的時間還沒有到,又有串連請求(可用的連接埠已經被用完),所以還會出現 Address already in use錯誤提示),就會產生大量的TIME_WAIT狀態的串連。這種情況下就有必要調整下Linux的TCP/IP核心參數,讓系統更快的釋放TIME_WAIT串連。

用vi開啟設定檔:

[python] view plain copy

#vi/etc/sysctl.conf

然後,在這個檔案中,加入下面的幾行內容(詳細內容及解釋參見 文章 修改Linux核心參數,減少TCP串連中的TIME-WAIT、linux TCP串連配置):

[python] view plain copy

net.ipv4.tcp_syncookies=1#這一行設定檔裡如果有就不用添加了net.ipv4.tcp_tw_reuse=1

net.ipv4.tcp_tw_recycle=1net.ipv4.tcp_fin_timeout=5

最後輸入下面的命令,讓核心參數生效:

[python] view plain copy

#/sbin/sysctl-p

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.