TCP 內核的一些優化

前提

要優化,就要先了解當前系統的網絡連接狀態情況,如下命令可以實現

netstat -n | awk '/^tcp/ {++S[$NF]} END{for(a in S) print a, S[a]}'

結果如下,此為本地虛擬機實驗所有結果不多,生產或外網的服務器會更多分類信息:

TCP 內核的一些優化

當前系統的網絡狀態分類彙總

狀態分類:

CLOSED : 無活動或正在進行的連接

LISTEN : 服務器正在等待進入呼叫

SYN_RECV : 一個連接請求已經到達,等待確認

ESTABLISHED : 正常數據傳輸狀態

FIN_WAIT1 : 應用返回已經完成

FIN_WAIT2 : 另一邊已同意釋放

ITMED_WAIT : 等待所有分組死掉

CLOSING : 兩邊嘗試同時關閉

TIME_WAIT : 另一邊已初始化一個釋放,

此狀態的會產生很多,進而導致服務器掛掉

LAST_ACK : 等待所有分組死掉

優化配置都是在 /etc/sysctl.conf 文件中添加或修改

做為Squid服務器優化 TIME_WAIT 狀態的方案

net.ipv4.tcp_fin_timeout =30

# 本端關閉鏈接時,決定FIN_WAIT2狀態時間

net.ipv4.tcp_keeplive_time=1200

# 啟用Keepalived時,發送消息的頻度

net.ipv4.tcp_syncookies=1

# 防止SYN攻擊

net.ipv4.tcp_tw_reuse=1

# TIME_WAIT 鏈接重用

net.ipv4.tcp_tw_recycle=1

# TIME_WAIT 鏈接快速回收

net.ipv4.ip_local_port_range=10000 65000

# 系統向外向外鏈接的端口範圍

net.ipv4.tcp_max_syn_backlog=8192

# SYN的長度

net.ipv4.tcp_max_tw_buckets=5000

# TIME_WAIT狀態的鏈接數量

用Apache或Nginx做為Web服務器的優化方案

net.ipv4.tcp_syncookies=1

net.ipv4.tcp_tw_reuse=1

net.ipv4.tcp_tw_recycle=1

net.ipv4.ip_local_port_range=10000 65000

做為Posttfix郵件服務器的優化方案

net.ipv4.tcp_fin_timeout=30

net.ipv4.tcp_keepalive_time=300

net.ipv4.tcp_tw_reuse=1

net.ipv4.tcp_tw_recycle=1

net.ipv4.ip_local_port_range=10000 65000

kernel.shmmax=134217728

以上優化項修改後,直接生效命令:

/sbin/sysctl -p


分享到:


相關文章: