TCP linux kernel 调优参数
2.6.32 标准内核 | 描述 | 默认值 | 优化值 |
/proc/sys/net/core/rmem_default | 默认的TCP数据接收窗口大小(字节)。 | 229376 | 256960 |
/proc/sys/net/core/rmem_max | 最大的TCP数据接收窗口(字节)。 | 131071 | 513920 |
/proc/sys/net/core/wmem_default | 默认的TCP数据发送窗口大小(字节)。 | 229376 | 256960 |
/proc/sys/net/core/wmem_max | 最大的TCP数据发送窗口(字节)。 | 131071 | 513920 |
/proc/sys/net/core/netdev_max_backlog | 在每个网络接口接收数据包的速率比内核处理这些包的速率快时,允许送到队列的数据包的最大数目。 | 1000 | 2000 |
/proc/sys/net/core/somaxconn | 定义了系统中每一个端口最大的监听队列的长度,这是个全局的参数。 | 128 | 2048 |
/proc/sys/net/core/optmem_max | 表示每个套接字所允许的最大缓冲区的大小。 | 20480 | 81920 |
/proc/sys/net/ipv4/tcp_mem | 确定TCP栈应该如何反映内存使用,每个值的单位都是内存页(通常是4KB)。第一个值是内存使用的下限;第二个值是内 存压力模式开始对缓冲区使用应用压力的上限;第三个值是内存使用的上限。在这个层次上可以将报文丢弃,从而减少对内存的使用。对于较大的BDP可以增大这 些值(注意,其单位是内存页而不是字节)。 | 94011 125351 188022 | 131072 262144 524288 |
/proc/sys/net/ipv4/tcp_rmem | 为自动调优定义socket使用的内存。第一个值是为socket接收缓冲区分配的最少字节数;第二个值是默认值(该值 会被rmem_default覆盖),缓冲区在系统负载不重的情况下可以增长到这个值;第三个值是接收缓冲区空间的最大字节数(该值会被rmem_max 覆盖)。 | 4096 87380 4011232 | 8760 256960 4088000 |
/proc/sys/net/ipv4/tcp_wmem | 为自动调优定义socket使用的内存。第一个值是为socket发送缓冲区分配的最少字节数;第二个值是默认值(该值 会被wmem_default覆盖),缓冲区在系统负载不重的情况下可以增长到这个值;第三个值是发送缓冲区空间的最大字节数(该值会被wmem_max 覆盖)。 | 4096 16384 4011232 | 8760 256960 4088000 |
/proc/sys/net/ipv4/tcp_keepalive_time | TCP发送keepalive探测消息的间隔时间(秒),用于确认TCP连接是否有效。 | 7200 | 1800 |
/proc/sys/net/ipv4/tcp_keepalive_intvl | 探测消息未获得响应时,重发该消息的间隔时间(秒)。 | 75 | 30 |
/proc/sys/net/ipv4/tcp_keepalive_probes | 在认定TCP连接失效之前,最多发送多少个keepalive探测消息。 | 9 | 3 |
/proc/sys/net/ipv4/tcp_sack | 启用有选择的应答(1表示启用),通过有选择地应答乱序接收到的报文来提高性能,让发送者只发送丢失的报文段,(对于广域网通信来说)这个选项应该启用,但是会增加对CPU的占用。 | 1 | 1 |
/proc/sys/net/ipv4/tcp_fack | 启用转发应答,可以进行有选择应答(SACK)从而减少拥塞情况的发生,这个选项也应该启用。 | 1 | 1 |
/proc/sys/net/ipv4/tcp_timestamps | TCP时间戳(会在TCP包头增加12个字节),以一种比重发超时更精确的方法(参考RFC 1323)来启用对RTT 的计算,为实现更好的性能应该启用这个选项。 | 1 | 1 |
/proc/sys/net/ipv4/tcp_window_scaling | 启用RFC 1323定义的window scaling,要支持超过64KB的TCP窗口,必须启用该值(1表示启用),TCP窗口最大至1GB,TCP连接双方都启用时才生效。 | 1 | 1 |
/proc/sys/net/ipv4/tcp_syncookies | 表示是否打开TCP同步标签(syncookie),内核必须打开了CONFIG_SYN_COOKIES项进行编译,同步标签可以防止一个套接字在有过多试图连接到达时引起过载。 | 1 | 1 |
/proc/sys/net/ipv4/tcp_tw_reuse | 表示是否允许将处于TIME-WAIT状态的socket(TIME-WAIT的端口)用于新的TCP连接 。 | 0 | 1 |
/proc/sys/net/ipv4/tcp_tw_recycle | 能够更快地回收TIME-WAIT套接字。 | 0 | 1 |
/proc/sys/net/ipv4/tcp_fin_timeout | 对于本端断开的socket连接,TCP保持在FIN-WAIT-2状态的时间(秒)。对方可能会断开连接或一直不结束连接或不可预料的进程死亡。 | 60 | 30 |
/proc/sys/net/ipv4/ip_local_port_range | 表示TCP/UDP协议允许使用的本地端口号 | 32768 61000 | 1024 65000 |
/proc/sys/net/ipv4/tcp_max_syn_backlog | 对于还未获得对方确认的连接请求,可保存在队列中的最大数目。如果服务器经常出现过载,可以尝试增加这个数字。 | 2048 | 2048 |
/proc/sys/net/ipv4/tcp_low_latency | 允许TCP/IP栈适应在高吞吐量情况下低延时的情况,这个选项应该禁用。 | 0 | |
/proc/sys/net/ipv4/tcp_timestamps | 开启此功能后,Tcp会在协议里携带时间戳,可以精准计算rtt。 | 1 | |
/proc/sys/net/ipv4/tcp_synack_retries | 握手阶段syn-ack最大发送次数。 | 5 | |
/proc/sys/net/ipv4/tcp_retries1 | 重传次数超过此门限将进行路由检测,还可以继续重传,一般tcp_retries1设置的值比tcp_retries2小。 | 3 | |
/proc/sys/net/ipv4/tcp_retries2 | 重传次数超过此门限将不再进行重传,同时关闭连接。 | 15 | |
/proc/sys/net/ipv4/tcp_fin_timeout | 处于FIN_WAIT_2状态的孤儿连接等待对端发fin的时间,超过此时间未收到fin就直接释放资源。在此时间内收到fin,就进入TIME_WAIT状态。单位为秒。 | 60 | |
/proc/sys/net/ipv4/tcp_no_metrics_save | 是否关闭metrics更新功能。如果设置为0,启用metrics更新功能,当TCP连接进入TIME_WAIT或者从LAST_ACK进入CLOSE时,会将连接的rtt,cwnd,ssthresh,reordering信息保存起来,如果下次与相同的对端再建立连接可以基于已经保存的metrics信息进行参数初始化。 | 0 | |
/proc/sys/net/ipv4/tcp_slow_start_after_idle | TCP连接空闲时网络可能发生变化,之前使用的拥塞窗口不一定准确,开启此选项后,当有新报文发送时,会重新调整拥塞窗口。 | 1 | |
/proc/sys/net/ipv4/tcp_early_retrans | 3 | ||
xtcp | |||
/proc/sys/net/ipv4/tcp_ks_version | xtcp 版本号 | ||
/proc/sys/net/ipv4/tcp_ks_dbg_pklog | printk 封装的日志打印控制变量 | 0 | |
/proc/sys/net/ipv4/tcp_ks_dbg_dumpinfo | systemtap 动态跟踪内核的系统控制变量 | 0 | |
/proc/sys/net/ipv4/tcp_ks_dbg_trace | 数据包式的 tcp 流程跟踪系统控制变量 | ||
/proc/sys/net/ipv4/tcp_ks_dbg_pktif | 数据包式的 tcp 流程跟踪系统所追踪的加速网口 | ||
/proc/sys/net/ipv4/tcp_ks_dbg_maxhttp | tcp 流复用时,最大解析http头的个数 | ||
/proc/sys/net/ipv4/tcp_ks_accport | xtcp 加速服务端口,最多加速5个端口 | 80 | |
/proc/sys/net/ipv4/tcp_ks_enable_accex_minrtt | 享受xtcp加速服务的tcp流的最小rtt | 6ms | |
/proc/sys/net/ipv4/tcp_ks_inicwnd | 初始拥塞窗口 | 22 | |
/proc/sys/net/ipv4/tcp_ks_minrto | 最小RTO | 70ms | |
/proc/sys/net/ipv4/tcp_ks_maxrto | 最大RTO | 2000ms | |
/proc/sys/net/ipv4/tcp_ks_synack_timeout | synack 重传超时base时间 | 200ms | |
/proc/sys/net/ipv4/tcp_ks_delayack_inccwnd | 如果客服端开启延时ack功能,cwnd的增长是未开启延时ack的2倍,只在慢启动阶段有效 | 1 开启 | |
/proc/sys/net/ipv4/tcp_ks_max_burst | 每轮rtt内允许每次发送数据包的最大突发量 | 16 | |
/proc/sys/net/ipv4/tcp_pacing | pacing 机制是否开启 | 1 默认开启 | |
/proc/sys/net/ipv4/tcp_pacing_maxcn | 享受 pacing机制的tcp最大连接数 | 13000 | |
/proc/sys/net/ipv4/tcp_pacing_minrtt | 享受 pacing机制的最小rtt | 7ms | |
/proc/sys/net/ipv4/tcp_ks_tlp_probe_interval | tlp 最大发送间隔时间 | 32ms | |
/proc/sys/net/ipv4/tcp_ks_ack_probe_interval | ack 主动探测的最大发送间隔 | 32ms | |
/proc/sys/net/ipv4/tcp_ks_ack_probe_maxcnt | ack 主动探测的最大次数 | 50 次 | |
/proc/sys/net/ipv4/tcp_ks_always_fack | 永久开启fack功能 | 1 开启 | |
/proc/sys/net/ipv4/tcp_ks_parase_http | 是否开启http头分析功能 | 1 开启 | |
/proc/sys/net/ipv4/tcp_ks_recovery | 是否开启rack功能 | 1 开启 | |
/proc/sys/net/ipv4/tcp_ks_rack_interval | rack依据最近接收的数据包时间推测标识重传队列上数据包丢失的时间间隔,值越小丢包预测越激进 | 15 | |
/proc/sys/net/ipv4/tcp_ks_prr_incmss | PRR 算法中cwnd增长的最小值 | 8 | |
/proc/sys/net/ipv4/tcp_ks_probe0_max_interval | 零窗口探测ack发送的最大时间间隔 | 300ms | |
reddevils | |||
/proc/sys/net/ipv4/tcp_ks_basertt | hybla 算法的base rtt,大于该值,会进行增窗补偿 | 45ms | |
/proc/sys/net/ipv4/tcp_ks_min_mn | 模拟逻辑流的最少个数 | 2 | |
/proc/sys/net/ipv4/tcp_ks_update_cycle | 计算更新网络允许承受 tcp 逻辑流个数的时间间隔 | 300ms | |
/proc/sys/net/ipv4/tcp_ks_min_ssthresh | 出现丢包后,估计慢启动门限值的最小值 | 16 | |
/proc/sys/net/ipv4/tcp_ks_min_lossmss | 出现丢包后,cwnd能够减少到的最小值 | 16 | |
/proc/sys/net/ipv4/tcp_ks_ssthresh_detect | 慢启动阶段,是否开启网络拥塞的主动探测机制 | 1 开启 | |
/proc/sys/net/ipv4/tcp_ks_delayq_ln | 慢启动阶段,探测网络拥塞时估计tcp data 排队的数据包最大个数,大于tcp_ks_delayq_ln即认为网络马上就要拥塞了 | 8 | |
/proc/sys/net/ipv4/tcp_ks_sample_cnt | 控制更新罗辑流个数时,需要多少次有效rtt采样 | 10 | |
/proc/sys/net/ipv4/tcp_ks_hystart_delay_max | 慢启动阶段,对采样到的rtt最大值限制 | 80ms | |
/proc/sys/net/ipv4/tcp_ks_hystart_delay_min | 慢启动阶段,对采样到的rtt最小值限制 | 4ms | |
/proc/sys/net/ipv4/tcp_ks_ca_aggre_inccwnd | 拥塞避免算法是否激进模式 | 1 激进模式 |