前提
要优化,就要先了解当前系统的网络连接状态情况,如下命令可以实现
netstat -n | awk '/^tcp/ {++S[$NF]} END{for(a in S) print a, S[a]}'
结果如下,此为本地虚拟机实验所有结果不多,生产或外网的服务器会更多分类信息:
状态分类:
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
閱讀更多 Linux猿 的文章