0
  • No products in the cart.
CartTotal:¥0.00
  • 云技术
    • 云服务器运维
    • 云数据库技术
    • 云存储技术
    • 云安全服务
    • 云网络服务
  • 云慧采
    • 云服务器
    • 云数据库
    • 云存储
    • 云安全
    • 网络与CDN
    • 视频服务
    • 大数据
    • 物联网
    • 人工智能
    • 开发与运维
    • 企业应用
  • 云服务
    • 阿里云技术支持
    • 华为云技术支持
    • 腾讯云技术支持
    • 木马病毒查杀
    • 渗透测试服务
    • 服务器迁移服务
    • 高并发业务保障服务
    • 数据库运维/专家服务
  • 云技术
    • 云服务器运维
    • 云数据库技术
    • 云存储技术
    • 云安全服务
    • 云网络服务
  • 云慧采
    • 云服务器
    • 云数据库
    • 云存储
    • 云安全
    • 网络与CDN
    • 视频服务
    • 大数据
    • 物联网
    • 人工智能
    • 开发与运维
    • 企业应用
  • 云服务
    • 阿里云技术支持
    • 华为云技术支持
    • 腾讯云技术支持
    • 木马病毒查杀
    • 渗透测试服务
    • 服务器迁移服务
    • 高并发业务保障服务
    • 数据库运维/专家服务

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_time TCP发送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_timestamps TCP时间戳(会在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 = 31
    net.ipv4.tcp_adv_win_scale = 2
    net.ipv4.tcp_tw_reuse = 0
    net.ipv4.tcp_frto = 2
    net.ipv4.tcp_frto_response = 0
    net.ipv4.tcp_low_latency = 0
    net.ipv4.tcp_no_metrics_save = 0
    net.ipv4.tcp_moderate_rcvbuf = 1
    net.ipv4.tcp_tso_win_divisor = 3
    net.ipv4.tcp_congestion_control = cubic
    net.ipv4.tcp_abc = 0
    net.ipv4.tcp_mtu_probing = 0
    net.ipv4.tcp_base_mss = 512
    net.ipv4.tcp_workaround_signed_windows = 0
    net.ipv4.tcp_challenge_ack_limit = 1000
    net.ipv4.tcp_limit_output_bytes = 262144
    net.ipv4.tcp_dma_copybreak = 4096
    net.ipv4.tcp_slow_start_after_idle = 1
    net.ipv4.cipso_cache_enable = 1
    net.ipv4.cipso_cache_bucket_size = 10
    net.ipv4.cipso_rbm_optfmt = 0
    net.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系统运维服务。

以上内容对您有帮助吗?如有问题,可联系在线工程师为您提供技术支持

Yes  No
相关内容
  • 高并发场景下的Linux系统调优
  • centos/Red Hat/Ubuntu关闭和开启iptables/firewalld防火墙
  • Linux服务器CLOSE_WAIT连接过多
  • Linux服务器FIN_WAIT2状态的TCP链接过多
  • Linux系统日志报“Time wait bucket table overflow”错误
  • NAT哈希表满导致Linux服务器丢包
产品
  • SSL证书5折起(DV,OV,EV,多域名,通配符,免费SSL证书安装配置) ¥2.00 ¥1.00
  • 漏洞扫描服务 ¥0.00 – ¥1,000.00
  • 阿里云云安全中心(服务器安全防护漏洞自动修复木马病毒查杀) ¥270.00 – ¥1,148.00
  • 阿里云web应用防火墙(WAF)防CC防SQL注入防网页篡改木马后门 ¥149.00 – ¥227,920.00
  • 阿里云文件存储NAS ¥157.00 – ¥840.00
Linux系统运维
  • Linux常用内核网络参数及修改方法
  • 高并发场景下的Linux系统调优
  • centos/Red Hat/Ubuntu关闭和开启iptables/firewalld防火墙
  • Linux服务器CLOSE_WAIT连接过多
  • Linux服务器FIN_WAIT2状态的TCP链接过多
  • Linux系统日志报“Time wait bucket table overflow”错误
View All 14  
热门内容
  • 阿里云混合云解决方案
  • 数据库上云迁移方案
  • 网站运维服务都包含哪些?
  • 为什么网站要有SSL证书?
  • 服务器迁移服务
服务分类
  • 云服务器运维
  • 网站运维
  • 云数据库技术
  • 云存储技术
  • 云安全服务
  • 云网络服务
  • CDN与边缘计算
  • 弹性计算
  • 优惠活动
  • 解决方案咨询与实施
  • 云架构设计优化
  • 容灾备份服务
  • 云上护航
  • Linux系统运维
  • 混合云与专有云
专题
AnalyticDB CDN技术 ClickHouse数据库 PolarDB SSL证书 web应用防火墙 云堡垒机 云存储网关 云数据库MongoDB 云数据库RDSmysql 云数据库redis 云服务器 云防火墙 全局流量管理 多模数据库Lindorm 安全加固 实人认证 容器服务 对象存储OSS 弹性伸缩 性能测试 数据仓库 数据库备份DBS 数据库审计 数据库自治服务DAS 数据湖 文件存储NAS 日志服务 服务网格 混合云存储 物联网安全 等保测评 表格存储Tablestore 运维技术 阿里云优惠
  • © 2020 云技术|云慧采. All Rights Reserved 服务电话13121395187