计算
弹性云服务器 ECS
Flexus云服务
裸金属服务器 BMS
弹性伸缩 AS
镜像服务 IMS
专属主机 DeH
函数工作流 FunctionGraph
云手机服务器 CPH
Huawei Cloud EulerOS
网络
虚拟私有云 VPC
弹性公网IP EIP
虚拟专用网络 VPN
弹性负载均衡 ELB
NAT网关 NAT
云专线 DC
VPC终端节点 VPCEP
云连接 CC
企业路由器 ER
企业交换机 ESW
全球加速 GA
安全与合规
安全技术与应用
Web应用防火墙 WAF
企业主机安全 HSS
云防火墙 CFW
安全云脑 SecMaster
DDoS防护 AAD
数据加密服务 DEW
数据库安全服务 DBSS
云堡垒机 CBH
数据安全中心 DSC
云证书管理服务 CCM
边缘安全 EdgeSec
威胁检测服务 MTD
CDN与智能边缘
内容分发网络 CDN
CloudPond云服务
智能边缘云 IEC
迁移
主机迁移服务 SMS
对象存储迁移服务 OMS
云数据迁移 CDM
迁移中心 MGC
大数据
MapReduce服务 MRS
数据湖探索 DLI
表格存储服务 CloudTable
云搜索服务 CSS
数据接入服务 DIS
数据仓库服务 GaussDB(DWS)
数据治理中心 DataArts Studio
数据可视化 DLV
数据湖工厂 DLF
湖仓构建 LakeFormation
企业应用
云桌面 Workspace
应用与数据集成平台 ROMA Connect
云解析服务 DNS
专属云
专属计算集群 DCC
IoT物联网
IoT物联网
设备接入 IoTDA
智能边缘平台 IEF
用户服务
账号中心
费用中心
成本中心
资源中心
企业管理
工单管理
国际站常见问题
ICP备案
我的凭证
支持计划
客户运营能力
合作伙伴支持计划
专业服务
区块链
区块链服务 BCS
Web3节点引擎服务 NES
解决方案
SAP
高性能计算 HPC
视频
视频直播 Live
视频点播 VOD
媒体处理 MPC
实时音视频 SparkRTC
数字内容生产线 MetaStudio
存储
对象存储服务 OBS
云硬盘 EVS
云备份 CBR
存储容灾服务 SDRS
高性能弹性文件服务 SFS Turbo
弹性文件服务 SFS
云硬盘备份 VBS
云服务器备份 CSBS
数据快递服务 DES
专属分布式存储服务 DSS
容器
云容器引擎 CCE
容器镜像服务 SWR
应用服务网格 ASM
华为云UCS
云容器实例 CCI
管理与监管
云监控服务 CES
统一身份认证服务 IAM
资源编排服务 RFS
云审计服务 CTS
标签管理服务 TMS
云日志服务 LTS
配置审计 Config
资源访问管理 RAM
消息通知服务 SMN
应用运维管理 AOM
应用性能管理 APM
组织 Organizations
优化顾问 OA
IAM 身份中心
云运维中心 COC
资源治理中心 RGC
应用身份管理服务 OneAccess
数据库
云数据库 RDS
文档数据库服务 DDS
数据管理服务 DAS
数据复制服务 DRS
云数据库 GeminiDB
云数据库 GaussDB
分布式数据库中间件 DDM
数据库和应用迁移 UGO
云数据库 TaurusDB
人工智能
人脸识别服务 FRS
图引擎服务 GES
图像识别 Image
内容审核 Moderation
文字识别 OCR
AI开发平台ModelArts
图像搜索 ImageSearch
对话机器人服务 CBS
华为HiLens
视频智能分析服务 VIAS
语音交互服务 SIS
应用中间件
分布式缓存服务 DCS
API网关 APIG
微服务引擎 CSE
分布式消息服务Kafka版
分布式消息服务RabbitMQ版
分布式消息服务RocketMQ版
多活高可用服务 MAS
事件网格 EG
企业协同
华为云会议 Meeting
云通信
消息&短信 MSGSMS
云生态
合作伙伴中心
云商店
开发者工具
SDK开发指南
API签名指南
Terraform
华为云命令行工具服务 KooCLI
其他
产品价格详情
系统权限
管理控制台
客户关联华为云合作伙伴须知
消息中心
公共问题
开发与运维
应用管理与运维平台 ServiceStage
软件开发生产线 CodeArts
需求管理 CodeArts Req
部署 CodeArts Deploy
性能测试 CodeArts PerfTest
编译构建 CodeArts Build
流水线 CodeArts Pipeline
制品仓库 CodeArts Artifact
测试计划 CodeArts TestPlan
代码检查 CodeArts Check
代码托管 CodeArts Repo
云应用引擎 CAE
开天aPaaS
云消息服务 KooMessage
云手机服务 KooPhone
云空间服务 KooDrive
文档首页/ 弹性云服务器 ECS/ 用户指南 (阿布扎比区域)/ 常见问题/ 网络配置/ 如何查看、修改Linux弹性云服务器的内核参数?

如何查看、修改Linux弹性云服务器的内核参数?

更新时间:2024-04-18 GMT+08:00

本文总结了常用的Linux内核参数,以及Linux内核参数的查看、修改方法。如果您的业务未受到影响,建议不要执行修改内核参数的操作。如需调整,请确保:

  • 从实际需要出发,有相关数据的支撑。
  • 了解每一个内核参数的含义,不同版本操作系统的内核参数可能不同。常用内核参数说明,请参见表1
  • 弹性云服务器中的重要数据进行备份。

背景知识

表1 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.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包头增加12 B),以一种比重发超时更精确的方法(参考RFC 1323)来启用对RTT的计算,为实现更好的性能应该启用这个选项。

net.ipv4.tcp_window_scaling

启用RFC 1323定义的window scaling,要支持超过64KB的TCP窗口,必须启用该值(1表示启用),TCP窗口最大至1GB,TCP连接双方都启用时才生效。

net.ipv4.tcp_syncookies

表示是否打开TCP同步标签(syncookie),内核必须打开了CONFIG_SYN_COOKIES项进行编译,同步标签可以防止一个套接字在有过多试图连接到达时引起过载。默认值0表示关闭。

net.ipv4.tcp_tw_reuse

表示是否允许将处于TIME-WAIT状态的socket(TIME-WAIT 的端口)用于新的TCP连接。

说明:

该参数仅对客户端有效,当“net.ipv4.tcp_timestamps”参数开启时生效。

该参数在NAT(Network AddressTranslation)场景下不能配置为1,否则将导致云服务器远程连接异常。

net.ipv4.tcp_tw_recycle

能够更快地回收TIME-WAIT套接字。

说明:

该参数仅当“net.ipv4.tcp_timestamps”参数开启时生效。

该参数在NAT(Network AddressTranslation)场景下不能配置为1,否则将导致云服务器远程连接异常。

net.ipv4.tcp_fin_timeout

对于本端断开的socket连接,TCP保持在FIN-WAIT-2状态的时间(秒)。对方可能会断开连接或一直不结束连接或不可预料的进程死亡。

net.ipv4.ip_local_port_range

表示TCP/UDP协议允许使用的本地端口号。

net.ipv4.tcp_max_syn_backlog

对于还未获得对方确认的连接请求,可保存在队列中的最大数目。如果服务器经常出现过载,可以尝试增加这个数字。默认为 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

哈希表项最大值。

查看内核参数

  • 方法一:通过“/proc/sys”目录,使用cat命令查看对应文件的内容。

    “/proc/sys/”目录是Linux内核启动后生成的伪目录,其目录下的net文件夹中存放了当前系统中生效的所有内核参数、目录树结构与参数的完整名称相关,如net.ipv4.tcp_tw_recycle,它对应的文件是 /proc/sys/net/ipv4/tcp_tw_recycle,文件的内容就是参数值。

    示例:

    以查看net.ipv4.tcp_tw_recycle的值为例,执行以下命令:

    cat /proc/sys/net/ipv4/tcp_tw_recycle

  • 方法二:通过“/etc/sysctl.conf”文件进行查看。

    执行以下命令,查看当前系统中生效的所有参数。

    /usr/sbin/sysctl -a

    net.ipv4.tcp_syncookies = 1
    net.ipv4.tcp_max_tw_buckets = 4096
    net.ipv4.tcp_tw_reuse = 1
    net.ipv4.tcp_tw_recycle = 1
    net.ipv4.tcp_keepalive_time = 1800
    net.ipv4.tcp_fin_timeout = 30
    ......
    net.ipv4.tcp_keepalive_time = 1200
    net.ipv4.ip_local_port_range = 1024 65000
    net.ipv4.tcp_max_syn_backlog = 8192
    net.ipv4.tcp_rmem = 16384 174760 349520
    net.ipv4.tcp_wmem = 16384 131072 262144
    net.ipv4.tcp_mem = 262144 524288 1048576
    ......

修改内核参数

  • 方法一:通过“/proc/sys”目录,使用echo命令修改内核参数对应的文件。

    该方法修改的参数值仅在当次运行中生效,重启后会重置为原参数值,一般用于临时性验证。如需永久生效,请参考方法二。

    “/proc/sys/”目录是Linux 内核启动后生成的伪目录,其目录下的net文件夹中存放了当前系统中生效的所有内核参数、目录树结构与参数的完整名称相关,如net.ipv4.tcp_tw_recycle,它对应的文件是/proc/sys/net/ipv4/tcp_tw_recycle,文件的内容就是参数值。

    示例:

    假设将net.ipv4.tcp_tw_recycle的值修改为0,执行以下命令:

    echo "0" > /proc/sys/net/ipv4/tcp_tw_recycle

  • 方法二:通过“/etc/sysctl.conf”文件进行修改。
    该方法修改的参数值,永久生效。
    1. 执行以下命令,修改指定的参数值。

      /sbin/sysctl -w kernel.domainname="example.com"

      示例:

      sysctl -w net.ipv4.tcp_tw_recycle="0"

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

      vi /etc/sysctl.conf

    3. 执行以下命令,使配置生效。

      /sbin/sysctl -p

我们使用cookie来确保您的高速浏览体验。继续浏览本站,即表示您同意我们使用cookie。 详情

文档反馈

文档反馈

意见反馈

0/500

标记内容

同时提交标记内容