CentOS TCP 效能最佳化
來源:互聯網
上載者:User
在/etc/sysctl.conf中加入
fs.file-max = 65535
net.ipv4.ip_forward = 1
net.ipv4.tcp_fin_timeout = 30
如果通訊端由本端要求關閉,這個參數決定了它保持在FIN-WAIT-2狀態的時間。對端可以出錯並永遠不關閉串連,甚至意外當機。預設值是60 秒。2.2 核心的通常值是180秒,你可以按這個設定,但要記住的是,即使你的機器是一個輕載的WEB伺服器,也有因為大量的死通訊端而記憶體溢出的風險,FIN- WAIT-2的危險性比FIN-WAIT-1要小,因為它最多隻能吃掉1.5K記憶體,但是它們的生存期長些。
net.ipv4.tcp_max_syn_backlog = 10240
表示SYN隊列的長度,預設為1024,加大隊列長度為10240,可以容納更多等待串連的網路連接數。
net.ipv4.tcp_keepalive_time = 1200
表示當keepalive起用的時候,TCP發送keepalive訊息的頻度。預設是2小時,改為20分鐘。
net.ipv4.tcp_synack_retries = 3
為了開啟對端的串連,核心需要發送一個SYN並附帶一個回應前面一個SYN的ACK。也就是所謂三向交握中的第二次握手。這個設定決定了核心放棄串連之前發送SYN+ACK包的數量
net.ipv4.tcp_syn_retries = 3
在核心放棄建立串連之前發送SYN包的數量。
net.ipv4.tcp_max_orphans = 8192
net.ipv4.tcp_max_tw_buckets = 5000
表示系統同時保持TIME_WAIT通訊端的最大數量,如果超過這個數字,TIME_WAIT通訊端將立刻被清除並列印警告資訊。預設為 180000,改為5000。對於Apache、Nginx等伺服器,上幾行的參數可以很好地減少TIME_WAIT通訊端數量,但是對於Squid,效果卻不大。此項參數可以控制TIME_WAIT通訊端的最大數量,避免Squid伺服器被大量的TIME_WAIT通訊端拖死。
net.ipv4.tcp_window_scaling = 0
支援更大的TCP視窗. 如果TCP視窗最大超過65535(64K), 必須設定該數值為1
net.ipv4.tcp_sack = 0
有選擇的應答
net.ipv4.tcp_timestamps = 0
時間戳記可以避免序號的卷繞。一個1Gbps的鏈路肯定會遇到以前用過的序號。時間戳記能夠讓核心接受這種“異常”的資料包。這裡需要將其關掉。使用時間戳將在(請參考RFC 1323)TCP的包頭增加12個位元組。
net.ipv4.tcp_syncookies = 1
表示開啟SYN Cookies。當出現SYN等待隊列溢出時,啟用cookies來處理,可防範少量SYN攻擊,預設為0,表示關閉;
net.ipv4.tcp_tw_reuse = 1
表示開啟重用。允許將TIME-WAIT sockets重新用於新的TCP串連,預設為0,表示關閉;
net.ipv4.tcp_tw_recycle = 1
表示開啟TCP串連中TIME-WAIT sockets的快速回收,預設為0,表示關閉。
net.ipv4.ip_local_port_range = 1024 65000
表示用於向外串連的連接埠範圍。預設情況下很小:32768到61000,改為1024到65000。
net.ipv4.icmp_echo_ignore_all = 0