tcp建连优化
1 tcp建连,降低客户端超时时间
net.ipv4.tcp_syn_retries = 6
2 tcp建连,服务端避免syn攻击
netstat -s | grep "SYNs to LISTEN" 1192450 SYNs to LISTEN sockets dropped
可以考虑增大syn队列
net.ipv4.tcp_max_syn_backlog = 1024
超过上述队列后,启用syn cookie
net.ipv4.tcp_syncookies = 1
降低retry次数,默认是5
net.ipv4.tcp_synack_retries = 5
上述操作后,依然溢出的,会被丢弃,建议启用rst复位以通知客户端
net.ipv4.tcp_abort_on_overflow = 0
3 accept后,服务器过忙,队列等待超出被丢弃
netstat -s | grep "listen queue" 14 times the listen queue of a socket overflowed
首先服务端进程listen时需要设置backlog
也受限于系统参数
net.core.somaxconn = 128
4 启用fastopen,跳过tcp3次握手
第 1 个比特位为 1 时,表示作为客户端时支持 TFO;第 2 个比特位为 1 时,表示作为服务器时支持 TFO,所以当 tcp_fastopen 的值为 3 时(比特为 0x11)就表示完全支持 TFO 功能。
net.ipv4.tcp_fastopen = 3
tcp断连优化
1 大量孤儿连接(无绑定进程,处于FIN_WAIT1)
默认是0,即8次
net.ipv4.tcp_orphan_retries = 3
2 应对恶意攻击
调整下述参数,再超出就会RST,默认是8192
net.ipv4.tcp_max_orphans = 16384
3 FIN_WAIT2状态的连接过多
调低参数,默认60
net.ipv4.tcp_fin_timeout = 5
4 TIME_WAIT状态连接过多
超过下述参数,就不走TIME_WAIT直接关闭,默认值18w
net.ipv4.tcp_max_tw_buckets = 5000
5 启用reuse,复用端口
net.ipv4.tcp_tw_reuse = 1 net.ipv4.tcp_timestamps = 1
强烈不建议启用tcp_tw_recycle,会导致数据错乱,4.12内核已去掉这个参数。
部分摘录自专栏《系统性能调优必知必会》,强烈安利一下!
其他参考 https://www.cnblogs.com/bodhitree/p/5756719.html