Linux作为一个强大的操作系统,提供了一系列内核参数供我们进行调优。光TCP的调优参数就有50多个。在和线上问题斗智斗勇的过程中,笔者积累了一些在内网环境应该进行调优的参数。在此分享出来,希望对大家有所帮助。
Linux内核源码还不是很了解的小伙伴推荐可以看看这个:Linux内核源码/内存调优/文件系统/进程管理/设备驱动/网络协议栈
调优清单
好了,在这里先列出调优清单。请记住,这里只是笔者在内网进行TCP内核参数调优的经验,仅供参考。同时,笔者还会在余下的博客里面详细解释了为什么要进行这些调优!
序号 |
内核参数 |
值 |
备注 |
1.1 |
/proc/sys/net/ipv4/tcp_max_syn_backlog |
2048 |
|
1.2 |
/proc/sys/net/core/somaxconn |
2048 |
|
1.3 |
/proc/sys/net/ipv4/tcp_abort_on_overflow |
1 |
|
2.1 |
/proc/sys/net/ipv4/tcp_tw_recycle |
0 |
NAT环境必须为0 |
2.2 |
/proc/sys/net/ipv4/tcp_tw_reuse |
1 |
|
3.1 |
/proc/sys/net/ipv4/tcp_syn_retries |
3 |
|
3.2 |
/proc/sys/net/ipv4/tcp_retries2 |
5 |
|
3.3 |
/proc/sys/net/ipv4/tcp_slow_start_after_idle |
0 |
tcp_max_syn_backlog,somaxconn,tcp_abort_on_overflow
tcp_max_syn_backlog,somaxconn,tcp_abort_on_overflow这三个参数是关于 内核TCP连接缓冲队列的设置。如果应用层来不及将已经三次握手建立成功的TCP连接从队列中取出,溢出了这个缓冲队列(全连接队列)之后就会丢弃这个连接。如下图所示: