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


分享到:


相關文章: