千家信息网

Linux常用内核网络参数及修改方法是什么

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,本篇文章为大家展示了Linux常用内核网络参数及修改方法是什么,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。Linux常用内核参数参数描述net.core.r
千家信息网最后更新 2026年11月01日Linux常用内核网络参数及修改方法是什么

本篇文章为大家展示了Linux常用内核网络参数及修改方法是什么,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

Linux常用内核参数

参数描述
net.core.rmem_default默认的TCP数据接收窗口大小(字节)。
net.core.rmem_max最大的TCP数据接收窗口(字节)。
net.core.wmem_default默认的TCP数据发送窗口大小(字节)。
net.core.wmem_max最大的TCP数据发送窗口(字节)。
net.core.netdev_max_backlog当内核处理速度比网卡接收速度慢时,这部分多出来的包就会被保存在网卡的接收队列上,而该参数说明了这个队列的数量上限。在每个网络接口接收数据包的速率比内核处理这些包的速率快时,允许送到队列的数据包的最大数目。
net.core.somaxconn该参数定义了系统中每一个端口最大的监听队列的长度,是个全局参数。该参数和net.ipv4.tcp_max_syn_backlog有关联,后者指的是还在三次握手的半连接的上限,该参数指的是处于ESTABLISHED的数量上限。若您的ECS实例业务负载很高,则有必要调高该参数。listen(2)函数中的参数backlog 同样是指明监听的端口处于ESTABLISHED的数量上限,当backlog大于net.core.somaxconn时,以net.core.somaxconn参数为准。
net.core.optmem_max表示每个套接字所允许的最大缓冲区的大小。
net.ipv4.tcp_mem确定TCP栈应该如何反映内存使用,每个值的单位都是内存页(通常是4KB)。
第一个值是内存使用的下限。
第二个值是内存压力模式开始对缓冲区使用应用压力的上限。
第三个值是内存使用的上限。在这个层次上可以将报文丢弃,从而减少对内存的使用。对于较大的BDP可以增大这些值(其单位是内存页而不是字节)。
net.ipv4.tcp_rmem为自动调优定义Socket使用的内存。
第一个值是为Socket接收缓冲区分配的最少字节数。
第二个值是默认值(该值会被rmem_default覆盖),缓冲区在系统负载不重的情况下可以增长到这个值。
第三个值是接收缓冲区空间的最大字节数(该值会被rmem_max覆盖)。
net.ipv4.tcp_wmem为自动调优定义Socket使用的内存。
第一个值是为Socket发送缓冲区分配的最少字节数。
第二个值是默认值(该值会被wmem_default覆盖),缓冲区在系统负载不重的情况下可以增长到这个值。
第三个值是发送缓冲区空间的最大字节数(该值会被wmem_max覆盖)。
net.ipv4.tcp_keepalive_timeTCP发送keepalive探测消息的间隔时间(秒),用于确认TCP连接是否有效。
net.ipv4.tcp_keepalive_intvl探测消息未获得响应时,重发该消息的间隔时间(秒)。
net.ipv4.tcp_keepalive_probes在认定TCP连接失效之前,最多发送多少个keepalive探测消息。
net.ipv4.tcp_sack启用有选择的应答(1表示启用),通过有选择地应答乱序接收到的报文来提高性能,让发送者只发送丢失的报文段,(对于广域网通信来说)这个选项应该启用,但是会增加对CPU的占用。
net.ipv4.tcp_fack启用转发应答,可以进行有选择应答(SACK)从而减少拥塞情况的发生,这个选项也应该启用。
net.ipv4.tcp_timestampsTCP时间戳(会在TCP包头增加12B),以一种比重发超时更精确的方法(参考RFC 1323)来启用对RTT的计算,为实现更好的性能应该启用这个选项。
net.ipv4.tcp_window_scaling启用RFC 1323定义的window scaling,要支持超过64KB的TCP窗口,必须启用该值(1表示启用),TCP窗口最大至1GB,TCP连接双方都启用时才生效。
net.ipv4.tcp_syncookies该参数表示是否打开TCP同步标签(SYN_COOKIES),内核必须开启并编译CONFIG_SYN_COOKIES,SYN_COOKIES可以防止一个套接字在有过多试图连接到达时,引起过载。默认值0表示关闭。
当该参数被设置为1,且SYN_RECV队列满了之后,内核会对SYN包的回复做一定的修改,即在响应的SYN+ACK包中,初始的序列号是由源IP+Port、目的IP+Port及时间这五个参数共同计算出一个值组成精心组装的TCP包。由于ACK包中确认的序列号并不是之前计算出的值,恶意攻击者无法响应或误判,而请求者会根据收到的SYN+ACK包做正确的响应。启用net.ipv4.tcp_syncookies后,会忽略net.ipv4.tcp_max_syn_backlog。
net.ipv4.tcp_tw_reuse表示是否允许将处于TIME-WAIT状态的Socket(TIME-WAIT的端口)用于新的TCP连接。
net.ipv4.tcp_tw_recycle能够更快地回收TIME-WAIT套接字。
net.ipv4.tcp_fin_timeout对于本端断开的Socket连接,TCP保持在FIN-WAIT-2状态的时间(秒)。对方可能会断开连接或一直不结束连接或不可预料的进程死亡。
net.ipv4.ip_local_port_range表示TCP/UDP协议允许使用的本地端口号。
net.ipv4.tcp_max_syn_backlog该参数决定了系统中处于SYN_RECV状态的TCP连接数量。SYN_RECV状态指的是当系统收到SYN后,作为SYN+ACK响应后等待对方回复三次握手阶段中的最后一个ACK的阶段。对于还未获得对方确认的连接请求,可保存在队列中的最大数目。如果服务器经常出现过载,可以尝试增加这个数字。默认为1024。
net.ipv4.tcp_low_latency允许TCP/IP栈适应在高吞吐量情况下低延时的情况,这个选项应该禁用。
net.ipv4.tcp_westwood启用发送者端的拥塞控制算法,它可以维护对吞吐量的评估,并试图对带宽的整体利用情况进行优化,对于WAN通信来说应该启用这个选项。
net.ipv4.tcp_bic为快速长距离网络启用Binary Increase Congestion,这样可以更好地利用以GB速度进行操作的链接,对于WAN通信应该启用这个选项。
net.ipv4.tcp_max_tw_buckets该参数设置系统的TIME_WAIT的数量,如果超过默认值则会被立即清除。默认为180000。
net.ipv4.tcp_synack_retries指明了处于SYN_RECV状态时重传SYN+ACK包的次数。
net.ipv4.tcp_abort_on_overflow设置该参数为1时,当系统在短时间内收到了大量的请求,而相关的应用程序未能处理时,就会发送Reset包直接终止这些链接。建议通过优化应用程序的效率来提高处理能力,而不是简单地Reset。默认值为0。
net.ipv4.route.max_size内核所允许的最大路由数目。
net.ipv4.ip_forward接口间转发报文。
net.ipv4.ip_default_ttl报文可以经过的最大跳数。
net.netfilter.nf_conntrack_tcp_timeout_established在指定之间内,已经建立的连接如果没有活动,则通过iptables进行清除。
net.netfilter.nf_conntrack_max哈希表项最大值。

查看和修改Linux实例内核参数

在修改内核参数前,需要注意以下几点:

  • 从实际需求出发,尽量有相关数据的支撑,不建议随意调整内核参数。

  • 了解参数的具体作用,需注意同类型或版本的环境中,内核参数可能有所不同。

  • 备份ECS实例中的重要数据。关于如何备份数据请参见创建快照。

本文提供以下两种修改Linux实例内核参数的方法。

方法一:通过/proc/sys/目录查看和修改内核参数

/proc/sys/目录是Linux内核在启动后生成的伪目录,其目录下的net文件夹中存放了当前系统中开启的所有内核参数,目录树结构与参数的完整名称相关,如net.ipv4.tcp_tw_recycle,它对应的文件是/proc/sys/net/ipv4/tcp_tw_recycle文件,文件的内容就是参数值。方法一中修改的参数值仅在当前运行中生效,系统重启后会回滚到历史值,一般用于临时性验证修改的效果。若需要永久性修改,请参见方法二。

  • 查看内核参数:使用cat命令查看对应文件的内容,执行以下命令,查看net.ipv4.tcp_tw_recycle的值。

    cat /proc/sys/net/ipv4/tcp_tw_recycle
  • 修改内核参数:使用echo命令修改内核参数对应的文件,执行以下命令,将net.ipv4.tcp_tw_recycle的值修改为0。

    echo "0" > /proc/sys/net/ipv4/tcp_tw_recycle
方法二:通过sysctl.conf文件查看和修改内核参数
  • 查看内核参数:执行sysctl -a命令,查看当前系统中生效的所有参数,系统显示类似如下。

    net.ipv4.tcp_app_win = 31net.ipv4.tcp_adv_win_scale = 2net.ipv4.tcp_tw_reuse = 0net.ipv4.tcp_frto = 2net.ipv4.tcp_frto_response = 0net.ipv4.tcp_low_latency = 0net.ipv4.tcp_no_metrics_save = 0net.ipv4.tcp_moderate_rcvbuf = 1net.ipv4.tcp_tso_win_divisor = 3net.ipv4.tcp_congestion_control = cubicnet.ipv4.tcp_abc = 0net.ipv4.tcp_mtu_probing = 0net.ipv4.tcp_base_mss = 512net.ipv4.tcp_workaround_signed_windows = 0net.ipv4.tcp_challenge_ack_limit = 1000net.ipv4.tcp_limit_output_bytes = 262144net.ipv4.tcp_dma_copybreak = 4096net.ipv4.tcp_slow_start_after_idle = 1net.ipv4.cipso_cache_enable = 1net.ipv4.cipso_cache_bucket_size = 10net.ipv4.cipso_rbm_optfmt = 0net.ipv4.cipso_rbm_strictvalid = 1
  • 通过以下两种方式,修改内核参数。

    说明:调整内核参数后,内核处于不稳定状态,请务必重启实例。

    • 执行以下命令,临时修改内核参数。
      /sbin/sysctl -w kernel.parameter="[$Example]"


      说明:[$Example]为参数值,如sysctl -w net.ipv4.tcp_tw_recycle="0"命令,将参数值改为0。

    • 通过修改配置文件的方式修改内核参数。

  1. 执行以下命令,修改/etc/sysctl.conf文件中的参数。
    vi /etc/sysctl.conf

  2. 执行以下命令,使配置生效。
    /sbin/sysctl -p

上述内容就是Linux常用内核网络参数及修改方法是什么,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注行业资讯频道。

参数 内核 最大 系统 命令 字节 数据 文件 方法 内存 缓冲区 缓冲 上限 情况 时间 状态 队列 实例 报文 数量 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 哈尔滨大商圈互联网科技有限公司 美国互联网保险保险科技 科技和互联网公司 互联网通讯科技 科技互联网政务服务 金融科技与互联网金融 百单互联网科技有限公司 苏州大垚互联网科技 互联网科技公司做什么 互联网科技产品 中化能源互联网科技招聘 上海宁丞科技互联网 荆州市昕露互联网络科技有限公司 互联网科技公司有风险吗 成都互联网科技公司工作好不好 四川慕妮娅互联网科技有限公司 科技互联网海报 启辰互联网科技 领航科技大厦互联网公司 现代科技的标志之一的互联网 科技互联网企业 互联网中国科技 互联网公司会议桌创意科技软装饰 农村开互联网科技讲堂 科技与互联网的利与弊 科技互联网大厂 中国航天科技大学国际工业互联网 互联网科技公司有风险吗 链环科技传统企业怎么转型互联网 山东亿川互联网科技有限责任公司
0