Linux内核网络参数优化小结

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

 

 

 

Leave a Reply

Your email address will not be published.