Linux默认TCP配置全解析

linux 默认tcp

时间:2024-12-07 18:59


Linux默认TCP参数优化指南 在Linux系统中,TCP(传输控制协议)网络参数的优化对于提升网络性能和确保稳定通信至关重要

    适当的网络配置不仅可以减少延迟、提高吞吐量,还能优化资源利用率,特别是在高并发和大数据传输场景下

    本文将详细介绍Linux默认TCP参数及其优化策略,以帮助读者更好地理解和调整这些参数,从而提升网络性能

     一、Linux默认TCP参数概述 Linux系统提供了许多TCP参数,用于调整TCP协议的行为,以适应不同的网络环境和应用需求

    以下是一些常见的TCP参数及其默认值: 1.tcp_syn_retries:TCP连接建立时的最大重试次数,默认为6

    当Client向Server发送SYN报文时,如果Server没有响应,Client会进行重传

    这个参数决定了重传的次数

     2.tcp_synack_retries:TCP连接建立时Server端对SYN-ACK报文的最大重传次数,默认为5

    当Server向Client发送SYN-ACK报文后,如果Client没有响应ACK报文,Server会进行重传

     3.tcp_fin_timeout:TCP连接关闭时的超时时间,默认为60秒

    当TCP连接进入FIN-WAIT-2状态时,如果本端迟迟收不到对端的FIN报文,就会一直处于这个状态,消耗系统资源

    这个参数设置了该状态的超时时间

     4.tcp_keepalive_time:TCP连接空闲时发送keepalive探测的时间间隔,默认为7200秒(2小时)

    keepalive机制用于检测长时间空闲的连接是否仍然有效

     5.tcp_keepalive_probes:发送keepalive探测的最大次数,默认为9次

    当发送keepalive探测后,如果没有收到响应,会继续发送,直到达到最大次数

     6.tcp_keepalive_intvl:发送keepalive探测的时间间隔,默认为75秒

     7.tcp_max_syn_backlog:半连接队列的最大长度,默认为1024

    半连接是指收到了SYN报文后还没有回复SYN-ACK的连接

     8.tcp_max_tw_buckets:TIME-WAIT状态的最大数量,默认为180000

    TIME-WAIT状态是TCP连接关闭后的一个状态,用于确保所有的数据包都被正确接收

     9.tcp_retries1:在连接建立过程中的第一次重试之前等待的时间,默认为3秒

     10. tcp_retries2:在连接建立过程中的第二次重试之前等待的时间,默认为15秒

     11. tcp_rmem:TCP接收缓冲区的大小,默认为4096字节(最小值)、87380字节(默认值)、4194304字节(最大值)

     12. tcp_wmem:TCP发送缓冲区的大小,默认为4096字节(最小值)、16384字节(默认值)、4194304字节(最大值)

     13. tcp_mem:TCP内存分配限制,默认为4096 87380 4194304(最小值、默认值、最大值)

     14. tcp_max_orphans:系统允许的最大孤立的TCP连接数,默认为8192

    孤立的连接是指那些不再与任何用户文件句柄相关联的连接

     二、Linux TCP参数优化策略 1. 优化最大文件打开数限制 Linux系统默认的最大文件打开数限制为1024,这对于高并发服务器来说是不够的

    建议将最大文件打开数限制增加到8192或更高,以防止因文件描述符不足而无法建立新的连接

     对所有用户进行优化 echo ulimit -SHn 8192 ] /etc/profile source /etc/profile 对普通用户进行优化 修改用户的.bash_profile文件,添加相同的内容 2. 优化TCP SYN重传次数 当服务器作为Client时,如果SYN报文在传输过程中丢失或Server无法处理,Client会触发超时重传机制

    默认的重传次数为6次,这会导致较长的等待时间

    建议减少重传次数以减少阻塞时间

     echo 2 > /proc/sys/net/ipv4/tcp_syn_retries 3. 优化半连接队列长度 半连接队列用于存储收到了SYN报文但还没有回复SYN-ACK的连接

    当系统中积压的半连接个数超过了队列长度后,新的SYN报文就会被丢弃

    对于服务器而言,可能会瞬间有非常多的新建连接,因此建议适当地增加半连接队列的长度

     echo 16384 > /proc/sys/net/ipv4/tcp_max_syn_backlog 4. 开启SYN Cookies SYN Cookies是一种防止SYN Flood攻击的机制

    当Server收到SYN报文时,不去分配资源来保存Client的信息,而是根据SYN报文计算出一个Cookie值,然后将Cookie记录到SYN-ACK报文中发送出去

    对于正常的连接,Cookie值会随着Client的ACK报文被带回来,Server再根据这个Cookie检查ACK报文的合法性

    如果合法,才去创建新的TCP连接

    建议开启SYN Cookies以增强服务器的安全性

     echo 1 > /proc/sys/net/ipv4/tcp_syncookies 5. 优化TCP SYN-ACK重传次数 当Client向Server发送SYN报文后,Server会返回SYN-A