tcp連接保持管理:
# 如果在該參數指定時間內某條連接處於空閒狀態,則內核向遠程主機發起探測
net.ipv4.tcp_keepalive_time = 7200
# 多久探測一次
net.ipv4.tcp_keepalive_intvl = 75
# 連續探測次數
net.ipv4.tcp_keepalive_probes = 9
tips:
內核發送保活探測的最大9次,如果探測次數大於這個數,則斷定遠程主機不可達,則關閉該連接並釋放本地資源,一個連接7200s空閒後,內核會每隔75秒去重試,若連續9次則放棄。這樣就導致一個連接經過2h11min的時間才能被丟棄,降低該值能夠儘量減小失效連接所佔用的資源,而被新的連接所使用。
#表示在每個網絡接口接收數據包的速率比內核處理這些包的速率快時,允許送到隊列的數據包的最大數目。
net.core.netdev_max_backlog=3000
#控制每個端口的tcp syn的隊列長度,來自客戶端的連接請求需要排隊,直至服務器接受,如果連接請求數大於該值,則連接請求會被丟棄,客戶端無法連接服務器,一般服務器要提高此值
net.ipv4.tcp_max_syn_backlog = 1024
#控制內核向某個socket的ack,syn段(三次握手的第二次握手)重新發送響應的次數,降低此值可以儘早檢測到來自遠程主機的連接失敗嘗試
net.ipv4.tcp_synack_retries = 5
#控制內核向已建立連接的遠程主機重新發送數據的次數,降低此值,可以儘早的檢測連接失效
net.ipv4.tcp_retries2 = 15
#TCP SYN包並返回TCP SYN+ACK包時,不分配一個專門的數據區,而是根據這個SYN包計算出一個cookie值。在收到TCP ACK包時,TCP服務器在根據那個cookie值檢查這個TCP ACK包的合法性。如果合法,再分配專門的數據區進行處理未來的TCP連接。
net.ipv4.tcp_syncookies = 1