1. linux下tcp的TIME_WAIT參數(shù)調(diào)整
?
netstat -na|awk '/^tcp/ {++S[$NF]} END {for(i in S) print i,S[i]}'
查看網(wǎng)絡(luò)節(jié)點(diǎn)的tcp連接狀態(tài),如果發(fā)現(xiàn)系統(tǒng)存在大量的TIME_WAIT狀態(tài)的連接,通過調(diào)整內(nèi)核參數(shù)解決:
?
vi /etc/sysctl.conf
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_keepalive_time = 1200
net.ipv4.tcp_max_syn_backlog = 8192
net.ipv4.tcp_max_tw_buckets = 5000
?
然后執(zhí)行以下命令讓參數(shù)生效
/sbin/sysctl -p
?
說明:
?
? ? ? net.ipv4.tcp_syncookies = 1 表示開啟 SYN Cookies 。當(dāng)出現(xiàn) SYN 等待隊(duì)列溢出時(shí),啟用 cookies 來處理,可防范少量 SYN 攻擊,默認(rèn)為 0 ,表示關(guān)閉;
net.ipv4.tcp_tw_reuse = 1 表示開啟重用。允許將 TIME-WAIT sockets 重新用于新的 TCP 連接,默認(rèn)為 0 ,表示關(guān)閉;
net.ipv4.tcp_tw_recycle = 1 表示開啟 TCP 連接中 TIME-WAIT sockets 的快速回收,默認(rèn)為 0 ,表示關(guān)閉。
net.ipv4.tcp_fin_timeout = 30 表示如果套接字由本端要求關(guān)閉,這個(gè)參數(shù)決定了它保持在 FIN-WAIT-2 狀態(tài)的時(shí)間。
net.ipv4.tcp_keepalive_time = 1200 表示當(dāng) keepalive 起用的時(shí)候, TCP 發(fā)送 keepalive 消息的頻度。缺省是 2 小時(shí),改為 20 分鐘。
net.ipv4.ip_local_port_range = 1024 65000 表示用于向外連接的端口范圍。缺省情況下很小: 32768 到 61000 ,改為 1024 到 65000 。
net.ipv4.tcp_max_syn_backlog = 8192 表示 SYN 隊(duì)列的長度,默認(rèn)為 1024 ,加大隊(duì)列長度為 8192 ,可以容納更多等待連接的網(wǎng)絡(luò)連接數(shù)。
net.ipv4.tcp_max_tw_buckets = 5000 表示系統(tǒng)同時(shí)保持 TIME_WAIT 套接字的最大數(shù)量,如果超過這個(gè)數(shù)字, TIME_WAIT 套接字將立刻被清除并打印警告信息。默認(rèn)為 180000 ,改為 5000 。對(duì)于 Apache 、 Nginx 等服務(wù)器,上幾行的參數(shù)可以很好地減少 TIME_WAIT 套接字?jǐn)?shù)量,但是對(duì)于 Squid ,效果卻不大。此項(xiàng)參數(shù)可以控制 TIME_WAIT 套接字的最大數(shù)量,避免 Squid 服務(wù)器被大量的 TIME_WAIT 套接字拖死。
?
?
?
注:TCP連接中TIME_WAIT狀態(tài)
?
?
上述四次握手描述的是客戶段主動(dòng)關(guān)閉,服務(wù)器被動(dòng)關(guān)閉的流程,其一般過程如下:
1 、 客戶端發(fā)送 FIN 報(bào)文段,進(jìn)入 FIN_WAIT_1 狀態(tài)。
2 、 服務(wù)器端收到 FIN 報(bào)文段,發(fā)送 ACK 表示確認(rèn),進(jìn)入 CLOSE_WAIT 狀態(tài)。
3 、 客戶端收到 FIN 的確認(rèn)報(bào)文段,進(jìn)入 FIN_WAIT_2 狀態(tài)。
4 、 服務(wù)器端發(fā)送 FIN 報(bào)文端,進(jìn)入 LAST_ACK 狀態(tài)。
5 、 客戶端收到 FIN 報(bào)文端,發(fā)送 FIN 的 ACK ,同時(shí)進(jìn)入 TIME_WAIT 狀態(tài),啟動(dòng) TIME_WAIT 定時(shí)器,超時(shí)時(shí)間設(shè)為 2MSL 。
6 、 服務(wù)器端收到 FIN 的 ACK ,進(jìn)入 CLOSED 狀態(tài)。
7 、 客戶端在 2MSL 時(shí)間內(nèi)沒收到對(duì)端的任何響應(yīng), TIME_WAIT 超時(shí),進(jìn)入 CLOSED 狀態(tài)。
?
?
2. linux下ulimit參數(shù)調(diào)整
vi /etc/security/limits.conf
work soft nofile 65535
work hard nofile 65535
?
?
ulimit -SHn 65536
?
ulimit -n
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
