Linux 性能调优实战:CPU、磁盘 I/O、网络与内核参数

前言

一、CPU 资源调优

1. 调整进程优先级(nice/renice)

2. 设置 CPU 亲和力(taskset)

3. 查看 CPU 信息

4. 使用 vmstat 分析系统瓶颈

二、磁盘 I/O 调优

1. ulimit 资源限制

2. 磁盘速度测试

三、内核参数调优

1. 常用 sysctl 参数

2. 参数含义详解

四、网络优化:网卡绑定(Bonding)

五、总结

前言

在高并发或高负载场景下,系统默认参数往往不能满足业务需求。本文总结了 CPU、磁盘 I/O、网络和内核参数 的常见调优方法,结合命令示例和实践经验,帮助你快速定位瓶颈并优化系统性能。


一、CPU 资源调优

1. 调整进程优先级(nice/renice)

  • 作用:通过调整 nice 值影响进程在 CPU 调度中的优先级。

  • 范围-20(最高优先级)到 19(最低优先级),默认值为 0

示例:

nice -n -5 vim a.txt      # 启动进程时设置优先级
renice -n 6 24318         # 调整已运行进程的优先级

可用 ps -o pid,psr,nice,comm -p <进程pid> 查看修改后的优先级

规律:

  • 值越小 → 优先级越高 → 更容易抢占 CPU

  • 值越大 → 优先级越低 → 更容易被调度延迟

常见用途:让关键服务(如 Nginx、数据库)优先级更高,而让耗时但不紧急的任务(如日志归档)优先级更低。


2. 设置 CPU 亲和力(taskset)

通过 taskset 可以将进程绑定到指定 CPU 核心,减少上下文切换。

taskset -c 0 vim a.txt        # 绑定进程到 CPU0
taskset -cp 20146             # 查看 PID=20146 的进程绑定情况
taskset -c 1,3 vim b.txt      # 限定进程运行在 CPU1 和 CPU3

注意:查看可用 ps -o pid,psr,comm -p <进程pid>进行查看 (

  • -o pid,psr,comm → 指定输出列:进程号、运行 CPU(psr)、进程名

  • -p  → 指定目标进程

)

适用场景:需要进程稳定占用特定核心时(如数据库、计算密集型应用)。


3. 查看 CPU 信息

cat /proc/cpuinfo 可查看 CPU 型号、核心数、缓存大小、指令集等关键信息。

常用统计:

# 物理 CPU 数
cat /proc/cpuinfo | grep "physical id" | sort | uniq
​
# 逻辑 CPU 数
cat /proc/cpuinfo | grep "processor" | wc -l
​
# 每个 CPU 的核心数
cat /proc/cpuinfo | grep "cpu cores" | uniq

补充:

  • sort:对结果排序,把相同的编号放到一起
  • uniq:去掉相邻的重复行,最后只保留唯一值

4. 使用 vmstat 分析系统瓶颈

vmstat 可以直观反映 CPU 使用情况:

  • r:就绪队列长度,大于 CPU 核心数×3 → CPU 紧张

  • us:用户态 CPU 占比

  • sy:内核态 CPU 占比

  • wa:I/O 等待时间,高表示磁盘瓶颈

  • id:CPU 空闲率

示例场景:

  • 上传大文件时 wa 占比高 → 磁盘写入繁忙

  • 高并发 HTTP 请求时 rus 高 → CPU 不够用


二、磁盘 I/O 调优

1. ulimit 资源限制

/etc/security/limits.conf 中设置进程的文件句柄数与线程数限制:

* soft nofile 1024000
* hard nofile 1024000
* soft nproc 65535
* hard nproc 65535

查看与修改:

ulimit -n   # 查看最大文件描述符
ulimit -u   # 查看最大进程数
ulimit -n 10000   # 临时修改

补充:

* soft nofile 1024000

  • 作用:设置所有用户的 软限制,即最大文件描述符数(包含文件、socket、管道等)。

  • :1024000,表示一个进程最多可以同时打开 1024000 个文件。

  • 说明:软限制可以临时超过(不超过硬限制),但一般内核会优先以软限制为准。


2. * hard nofile 1024000

  • 作用:设置所有用户的 硬限制,即绝对最大文件描述符数。

  • :1024000。

  • 说明:硬限制是系统强制的上限,普通用户不能超过,只能由 root 调整。


3. * soft nproc 65535

  • 作用:设置所有用户的 软限制,即最大可用的进程/线程数量。

  • :65535,表示用户最多可以同时运行 65535 个进程/线程。

  • 说明:用于防止单个用户创建过多进程耗尽系统资源。


4. * hard nproc 65535

  • 作用:设置所有用户的 硬限制,即进程/线程数量的绝对上限。

  • :65535。

  • 说明:避免 fork 炸弹(无限创建进程)导致系统崩溃。


2. 磁盘速度测试

读速度:

hdparm -t --direct /dev/sda

写速度:

dd if=/dev/zero of=/test.dbf bs=1M count=2000 oflag=direct

统计耗时:

time dd if=/dev/zero of=/test.dbf bs=1M count=200


三、内核参数调优

1. 常用 sysctl 参数

/etc/sysctl.conf 中修改:

net.ipv4.tcp_synack_retries = 0
net.ipv4.tcp_syn_retries = 1
net.ipv4.tcp_max_syn_backlog = 20480
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_fin_timeout = 10
fs.file-max = 819200
net.core.somaxconn = 65535
net.core.netdev_max_backlog = 165536
net.ipv4.ip_local_port_range = 10000 65535

应用修改:

sysctl -p

2. 参数含义详解

  • net.ipv4.tcp_synack_retries = 0 服务端在收到客户端 SYN 后,发送 SYN+ACK 的重试次数。设置为 0 表示不重试,可快速释放半连接资源,适合高并发场景。

  • net.ipv4.tcp_syn_retries = 1 客户端发送 SYN 连接请求的最大重试次数。默认较大(通常为 6),设置为 1 可缩短失败连接的等待时间。

  • net.ipv4.tcp_max_syn_backlog = 20480 TCP 半连接队列长度。值越大,能同时处理的未完成握手连接越多,适合高并发 Web 服务。

  • net.ipv4.tcp_syncookies = 1 启用 SYN Cookie 技术,有效防御 SYN Flood 攻击,但可能对性能有一定影响。

  • net.ipv4.tcp_tw_reuse = 1 允许 TIME_WAIT 状态的套接字被新的连接复用。提高端口利用率,适合短连接场景(如 Web 服务)。

  • net.ipv4.tcp_tw_recycle = 1 加快 TIME_WAIT 套接字的回收。⚠️ 由于 NAT 环境下可能导致问题,新内核版本已废弃,不推荐在公网环境启用。

  • net.ipv4.tcp_fin_timeout = 10 TCP 连接在 FIN_WAIT_2 状态下的超时时间(默认 60 秒)。调小可更快释放无效连接。

  • fs.file-max = 819200 系统级文件描述符最大值。直接决定整个系统能同时打开的文件/连接数。

  • net.core.somaxconn = 65535 系统级最大监听队列长度(影响 listen())。默认值较小(128),需要调大以承载高并发连接。

  • net.core.rmem_max = 1024123000 套接字接收缓冲区的最大值(字节),适合大数据传输或高带宽环境。

  • net.core.wmem_max = 16777216 套接字发送缓冲区的最大值(字节),适合大吞吐量应用。

  • net.core.netdev_max_backlog = 165536 网络接口接收队列长度。值越大,可缓存更多数据包,减少丢包风险。

  • net.ipv4.ip_local_port_range = 10000 65535 系统可用的本地端口范围。适合大规模短连接应用,避免端口耗尽。


📌 调优建议

  • Web/应用服务器:重点关注 tcp_max_syn_backlogsomaxconntcp_tw_reuseip_local_port_range

  • 数据库服务器:适当调大 rmem_maxwmem_max,保证大事务吞吐

  • 高并发网关/代理:增加 netdev_max_backlog,减少丢包


四、网络优化:网卡绑定(Bonding)

常见模式:

  • mode=0 负载均衡(需交换机支持)

  • mode=1 主备模式(常用)

  • mode=4 LACP 聚合(需交换机支持)

配置示例(主备模式):

nmcli connection add type bond ifname bond0 con-name bond0 miimon 100 mode active-backup primary ens33 ip4 192.168.1.63/24
nmcli connection add type bond-slave ifname ens33 master bond0
nmcli connection add type bond-slave ifname ens38 master bond0

验证:

cat /proc/net/bonding/bond0

五、总结

模块调优手段适用场景
CPUnice、taskset、vmstat高 CPU 负载,多进程调度
磁盘 I/Oulimit、hdparm、dd高并发读写、备份任务
网络Bonding、内核参数高可用、负载均衡、防攻击
内核sysctl 参数优化高并发连接、安全防护

📌 建议:调优需结合业务特点和测试验证,盲目修改参数可能带来副作用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/diannao/97078.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/97078.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【进阶篇第五弹】《详解存储过程》从0掌握MySQL中的存储过程以及存储函数

文章目录存储过程一、基本语法(1)创建存储过程(2)调用存储过程(3)查看存储过程(4)删除存储过程(5)设置结束符(6)参数二、变量(1)系统变量(2)用户自定义变量(3)局部变量三、基本语句(1)if判断(2)case(3)while循环(4)repeat(5)loop循环四、游标五、条件处理程序六、存储函数存储过…

HarmonyOS布局实战:用声明式UI构建自适应电商卡片

首先诚邀大家参加学习鸿蒙拿好礼活动&#xff0c;即日起&#xff0c;只要加入班级考取华为开发者基础/高级证书&#xff0c;并发表一篇技术文章&#xff0c;就有机会获得官方发放的精美礼品&#xff0c;数量有限&#xff0c;先到先得。冷老师的班级链接如下&#xff1a;​华为开…

日语学习-日语知识点小记-构建基础-JLPT-N3阶段(21):文法+单词第7回3

日语学习-日语知识点小记-构建基础-JLPT-N3阶段&#xff08;&#xff12;1&#xff09;&#xff1a;文法单词第7回3 1、前言&#xff08;1&#xff09;情况说明&#xff08;2&#xff09;工程师的信仰2、知识点&#xff11;ー 。。。と。。。なる&#xff12;ーVて欲しい ・ …

Baumer高防护相机如何通过Tiny-YOLO单类模型实现人体跌倒检测与跟踪(C#代码UI界面版)

《------往期经典推荐------》 AI应用软件开发实战专栏【链接】 序号项目名称项目名称11.工业相机 YOLOv8 实现人物检测识别&#xff1a;&#xff08;C#代码&#xff0c;UI界面版&#xff09;2.工业相机 YOLOv8 实现PCB的缺陷检测&#xff1a;&#xff08;C#代码&#xff0…

从源码看浏览器弹窗消息机制:SetDefaultView 的创建、消息转发与本地/在线页通用实践

引言在现代浏览器的开发中&#xff0c;前端页面和 C 内核之间的通信是一项核心功能。无论是本地设置页&#xff08;chrome:// 内置 H5&#xff09;还是在线活动页&#xff0c;前端都可能需要调用浏览器底层 API&#xff0c;实现诸如“设置默认浏览器”、“更改壁纸”、“读取用…

对比视频处理单元(VPU)、图形处理器(GPU)与中央处理器(CPU)

如今选择互联网点播流媒体与直播视频的用户数量已远超传统广播电视&#xff0c;这一转变催生了对高性能媒体转码与OTT流媒体功能专用技术的需求。 我们最新推出的Accelerated Compute云计算解决方案&#xff0c;首次通过NETINT Quadra视频处理单元&#xff08;VPU&#xff09;…

vue3写一个简单的时间轴组件

插件版本&#xff1a;"element-plus": "^2.3.12""vue": "^3.0.0"代码示例&#xff1a;样式文件style.less&#xff1a;改变el-tooltip样式&#xff0c;可以复制代码到公共样式文件.el-popper.o-el-tooltip-popper-class {max-width: 3…

Linex系统网络管理(二)

二、网络连接查看1. netstat作用查看本地服务的网络监听状态查看客户端连接到本地服务的连接状态语法&#xff1a;netstat 选项 &#xff08;-anptu&#xff09;选项作用-n&#xff0c; --numeric显示数字形式地址而不是去解析主机、端口或用户名-a, --all显示所有的监听或连接…

Unity MQTT通讯

首先明确概念&#xff0c;什么是MQTT&#xff1f; MQTT是一种轻量级、基于发布 / 订阅&#xff08;Publish/Subscribe&#xff09;模式的物联网&#xff08;IoT&#xff09;通信协议&#xff0c;在带宽有限、网络不稳定的环境下&#xff0c;实现低功耗、低延迟的设备间通信&am…

JavaSE:类和对象2

一、封装封装的概念面向对象程序三大特性&#xff1a;封装、继承、多态。而类和对象阶段&#xff0c;主要研究的就是封装特性。何为封装呢&#xff1f;简单来说 就是套壳屏蔽细节。例如手机&#xff0c;你看不到任何的内部实现细节&#xff0c;只留下一些公开的接口给你使用&am…

RandAR训练自己的数据集

论文题目:RandAR: Decoder-only Autoregressive Visual Generation in Random Orders(随机顺序下仅解码器的自回归视觉生成) 会议:CVPR2025 摘要:我们介绍了RandAR,一种仅解码器的视觉自回归(AR)模型,能够以任意令牌顺序生成图像。与之前依赖于预定义生成顺序的纯解码器…

基于PHP服装租赁管理系统/基于php的服装管理系统的设计与实现

基于PHP服装租赁管理系统/基于php的服装管理系统的设计与实现

高并发内存池(12)-ThreadCache回收内存

高并发内存池&#xff08;12&#xff09;-ThreadCache回收内存 代码如下&#xff1a; // 释放对象时&#xff0c;链表过长时&#xff0c;回收内存回到中心缓存 void ThreadCache::ListTooLong(FreeList& list, size_t size) {void* start nullptr;void* end nullptr;list…

读大语言模型09超级智能

1. 超级智能1.1. 如果人工智能超越人类智能&#xff0c;可能会成为人类存在的一个重大威胁1.1.1. 对超级人工智能潜在危险最为担忧的群体中&#xff0c;恰恰包括那些否认大语言模型具备真正智能的人1.2. 计算机科学已经成为所有科学领域中不可或缺的重要组成部1.3. GPT具备编写…

阿里云拉取dockers镜像

假如你已经在云服务器上安装了docker需要配置下docker镜像加速代理就行了找到自己的加速网址&#xff1a;然后在云服务器上&#xff0c;修改docker 配置文件&#xff0c;vi /etc/docker/daemon.json没有这个文件的话&#xff0c;需要创建一个。{"default-address-pools&qu…

python自学笔记14 NumPy 线性代数

在Numpy库中有专门的linalg 模块用来做线性代数相关的运算。 本文中线性代数的一般概念不会解释 拆解矩阵 鸢尾花数据矩阵结构如下&#xff08;150 4&#xff09;&#xff1a;取其中的行向量和列向量&#xff1a; # 导入包 import numpy as np from sklearn.datasets import l…

ubuntu20搭建MQTT

sudo apt update sudo apt install mosquitto mosquitto-clients sudo mosquitto_passwd -c /etc/mosquitto/passwd myuser sudo nano /etc/mosquitto/mosquitto.conf# 允许匿名用户连接&#xff08;默认为 true&#xff0c;我们先关闭它&#xff09; allow_anonymous false# 指…

云服务器的主要用途都有哪些?

企业可以利用云服务器构建官方网站&#xff0c;企业官网需要稳定的运行环境来展示产品、服务、公司动态等信息&#xff0c;云服务器提供的高可用性和可扩展性&#xff0c;能保障大量用户同时访问时网站的稳定运行。移动应用的后端服务可以部署在云服务器上&#xff0c;如社交类…

IntelliJ IDEA Debug 模式功能指南

文章目录前言&#x1f4a1; 1. 断点类型与设置&#x1f680; 2. 启动 Debug 模式⚙️ 3. 调试控制按钮详解&#x1f440; 4. 查看与监控变量&#x1f9f0; 5. 高级调试技巧&#x1f48e; 总结前言 作为一名 Java 开发者&#xff0c;熟练掌握调试技巧是提高开发效率的关键。Int…

在pycharmIDE中如何快速掌握一个新模块的使用方法

一、文档使用悬停文档&#xff1a;鼠标悬停在模块/函数上显示文档摘要 (⭐最常用)快速文档&#xff1a;选中标识符按 CtrlQ (Windows/Linux) 或 F1 (Mac)跳转定义&#xff1a;Ctrl左键单击 直接跳转到源码定义处 (⭐最权威)参数提示&#xff1a;输入函数名时自动显示参数列表&a…