目录
[一、CPU 资源调优:提升调度效率与资源分配](#一、CPU 资源调优:提升调度效率与资源分配)
[1.1 调整进程优先级(nice 值)](#1.1 调整进程优先级(nice 值))
[1.2 设置 CPU 亲和力(taskset)](#1.2 设置 CPU 亲和力(taskset))
[1.3 CPU 信息查询与核心数计算](#1.3 CPU 信息查询与核心数计算)
[1.4 用 vmstat 分析 CPU 瓶颈](#1.4 用 vmstat 分析 CPU 瓶颈)
[二、磁盘 I/O 调优:提升读写效率与资源限制](#二、磁盘 I/O 调优:提升读写效率与资源限制)
[2.1 调整文件描述符与进程数限制(ulimit)](#2.1 调整文件描述符与进程数限制(ulimit))
[2.2 磁盘读写速度测试](#2.2 磁盘读写速度测试)
[3.1 防御 SYN 洪水攻击](#3.1 防御 SYN 洪水攻击)
[3.2 其他核心参数说明](#3.2 其他核心参数说明)
[4.1 常用模式](#4.1 常用模式)
[4.2 主备模式配置(nmcli 命令)](#4.2 主备模式配置(nmcli 命令))
前言
在高并发、高负载的 Linux 系统环境中,性能瓶颈往往隐藏在 CPU 调度、磁盘 I/O、网络传输或内核参数配置中。合理的调优不仅能提升系统稳定性,更能充分发挥硬件资源潜力。本文聚焦 CPU、磁盘 I/O、网络及内核参数四大核心模块,通过实战命令与配置案例,详解调优逻辑与落地方法,帮助运维人员快速定位并解决性能问题。
一、CPU 资源调优:提升调度效率与资源分配
CPU 是系统处理任务的核心,其调度策略与资源分配直接影响响应速度。以下调优手段可精准优化 CPU 利用率。
1.1 调整进程优先级(nice 值)
进程的 nice 值决定了 CPU 调度的优先级,通过调整该值可实现资源的倾斜分配。

vim后不退出,在开一个页面输入下面的命令:

-
取值范围:-20(最高优先级)~19(最低优先级),默认值为 0。
-
核心逻辑:
-
nice 值越小,进程优先级越高,获得的 CPU 时间片越多;
-
nice 值越大,进程优先级越低,仅在系统空闲时获得资源。
-
-
实战命令:
# 启动进程时设置优先级(如给 vim 较高优先级) nice -n -5 vim a.txt # 修改运行中进程的优先级(如降低 PID 为 24318 的进程优先级) renice -n 6 24318
-
适用场景:
-
给核心服务(如数据库、Web 服务器)设置较低 nice 值(如 -10),确保高优先级;
-
给后台任务(如日志备份、数据同步)设置较高 nice 值(如 15),避免占用核心资源。
-
1.2 设置 CPU 亲和力(taskset)
将进程绑定到特定 CPU 核心,可减少进程在多核心间切换的开销(上下文切换),提升缓存利用率。

-
安装工具 :
yum install util-linux
(通常系统默认预装)。 -
实战命令:
# 启动进程时绑定到 CPU0 taskset -c 0 vim a.txt # 查看进程(PID 20146)的 CPU 绑定情况 taskset -cp 20146 # 绑定进程到 CPU1 和 CPU3 taskset -c 1,3 vim b.txt
-
适用场景:
-
单线程程序(如某些脚本)绑定到单个核心,避免多核心切换损耗;
-
多线程服务(如 Nginx)按核心分组绑定,提升缓存命中率。
-
1.3 CPU 信息查询与核心数计算
通过 /proc/cpuinfo
可获取 CPU 硬件细节,为调优提供硬件基础数据。
-
关键命令:
# 查看物理 CPU 数量 cat /proc/cpuinfo | grep "physical id" | sort | uniq | wc -l # 查看逻辑 CPU 数量(含超线程) cat /proc/cpuinfo | grep "processor" | sort -u | wc -l # 查看单物理 CPU 的核心数 cat /proc/cpuinfo | grep "cpu cores" | sort | uniq
[root@localhost zz]# cat /proc/cpuinfo
processor : 0 #cpu核心编号
vendor_id : GenuineIntel
cpu family : 6
model : 142
model name : Intel(R) Core(TM) i3-7020U CPU @ 2.30GHz
stepping : 9
microcode : 0xf0
cpu MHz : 2304.003
cache size : 3072 KB
physical id : 0 #物理CPU编号
siblings : 1
core id : 0 #物理核心编号
cpu cores : 1 #单个物理cpu的物理核心数
apicid : 0
initial apicid : 0
fpu : yes
fpu_exception : yes
cpuid level : 22
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon nopl xtopology tsc_reliable nonstop_tsc eagerfpu pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch invpcid_single ssbd ibrs ibpb stibp fsgsbase tsc_adjust bmi1 avx2 smep bmi2 invpcid rdseed adx smap clflushopt xsaveopt xsavec xgetbv1 arat md_clear spec_ctrl intel_stibp flush_l1d arch_capabilities
bogomips : 4608.00
clflush size : 64
cache_alignment : 64
address sizes : 45 bits physical, 48 bits virtual
power management:
sql
[root@localhost zz]# cat /proc/cpuinfo | grep "physical id" | sort |uniq
physical id : 0
# cat /proc/cpuinfo:读取 /proc/cpuinfo 文件(系统 CPU 信息的虚拟文件)。
# grep "physical id":筛选包含 "physical id" 的行(physical id 表示物理 CPU 的编号)。
# sort:对筛选结果排序。
# uniq:去除重复的行(只保留唯一值)。
# 输出:physical id : 0 表示系统中只有 1 个物理 CPU(编号为 0,通常从 0 开始计数)。
[root@localhost zz]# cat /proc/cpuinfo | grep "processor" | sort -u | wc -l
1
# grep "processor":筛选包含 "processor" 的行(processor 表示逻辑 CPU 的编号)。
# sort -u:排序并去重(-u 等同于 uniq)。
# wc -l:统计行数(即逻辑 CPU 的数量)。
# 输出:1 表示系统中共有 1 个逻辑 CPU(如果开启超线程,逻辑 CPU 数量会大于物理核心数)
[root@localhost zz]# cat /proc/cpuinfo | grep "cpu cores" | sort |uniq
cpu cores : 1
# grep "cpu cores":筛选包含 "cpu cores" 的行(cpu cores 表示单个物理 CPU 的核心数)。
# 输出:cpu cores : 1 表示这个物理 CPU 有 1 个核心(核心数是物理 CPU 上的硬件处理单元数量)。
-
核心数解读:
-
物理 CPU 数:服务器插槽上的实际 CPU 数量;
-
逻辑 CPU 数:物理核心数 × 超线程数(如 4 核 8 线程,逻辑 CPU 为 8);
-
调优依据:进程数建议不超过逻辑 CPU 数的 2~3 倍,避免调度拥堵。
-
1.4 用 vmstat 分析 CPU 瓶颈
vmstat
可实时监控系统整体状态,快速定位 CPU 或 I/O 瓶颈。
-
关键指标:
-
r
:运行队列长度(持续 > 逻辑 CPU 数 × 3 → CPU 过载); -
us
:用户态 CPU 占比(高值说明应用程序消耗大,如 Java 进程); -
sy
:内核态 CPU 占比(高值可能是系统调用频繁,如频繁读写文件); -
wa
:CPU 等待 I/O 时间占比(>20% → 磁盘 I/O 成为瓶颈)。
-
-
实战场景:
-
高并发 Web 请求:
r
增大、us
升高 → 需优化应用(如增加缓存、异步处理); -
大文件复制:
wa
升高、bi/bo
增大 → 需优化磁盘(如使用 RAID、SSD)。
-
二、磁盘 I/O 调优:提升读写效率与资源限制
磁盘 I/O 是系统性能的常见瓶颈,尤其在数据库、文件服务器等场景中,需通过资源限制与性能测试优化。
2.1 调整文件描述符与进程数限制(ulimit)
Linux 中 "一切皆文件"(包括网络连接),文件描述符与进程数限制过严会导致服务异常(如 "too many open files")。
-
配置文件 :
/etc/security/limits.conf
(永久生效)。 -
常用配置:
# 对所有用户生效(* 表示所有用户) * soft nofile 1024000 # 软限制:超过警告,不强制阻止 * hard nofile 1024000 # 硬限制:绝对不能超过 * soft nproc 65535 # 进程数软限制 * hard nproc 65535 # 进程数硬限制
-
临时修改:
ulimit -n 10000 # 临时调整文件描述符软限制
-
验证命令:
ulimit -n # 查看文件描述符软限制 ulimit -Hn # 查看文件描述符硬限制 ulimit -u # 查看进程数限制
2.2 磁盘读写速度测试
通过工具测试磁盘性能,为调优提供基准数据(如选择合适的文件系统、调整块大小)。
-
读速度测试(hdparm):
# 直接读取物理磁盘(跳过缓存),测试真实读速度 hdparm -t --direct /dev/sda
-
写速度测试(dd):
# 生成 2GB 测试文件,直接写入磁盘(跳过缓存) 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
-
结果解读:
-
机械硬盘:读速约 100~200MB/s,写速约 80~150MB/s;
-
SSD:读速约 300~500MB/s,写速约 200~400MB/s;
-
若实测速度远低于硬件标称值,需检查磁盘健康状态(如
smartctl
)或文件系统配置。
-
三、内核参数调优:增强稳定性与抗攻击能力
内核参数决定了系统的网络、内存、I/O 等核心行为,合理配置可显著提升系统性能与安全性。
3.1 防御 SYN 洪水攻击
SYN 洪水攻击通过发送大量半连接请求耗尽服务器资源,需通过内核参数缓解。
-
配置文件 :
/etc/sysctl.conf
。 -
关键配置:
# 限制 SYN 重试次数,减少半连接队列占用 net.ipv4.tcp_synack_retries = 0 net.ipv4.tcp_syn_retries = 1 # 增大半连接队列容量 net.ipv4.tcp_max_syn_backlog = 20480 # 启用 SYN Cookie(用 Cookie 验证替代队列存储) net.ipv4.tcp_syncookies = 1 # 复用 TIME_WAIT 状态的连接 net.ipv4.tcp_tw_reuse = 1 net.ipv4.tcp_tw_recycle = 1 # 缩短 TIME_WAIT 超时时间(默认 60s) net.ipv4.tcp_fin_timeout = 10 # 系统最大文件句柄数 fs.file-max = 819200 # 最大连接队列长度 net.core.somaxconn = 65535
-
生效配置 :
sysctl -p
3.2 其他核心参数说明
参数 | 作用 | 推荐值 |
---|---|---|
net.core.rmem_max |
最大接收缓冲区大小(字节) | 1024123000 |
net.core.wmem_max |
最大发送缓冲区大小(字节) | 16777216 |
net.ipv4.ip_local_port_range |
本地端口范围(避免端口耗尽) | 10000 65535 |
net.core.netdev_max_backlog |
网络设备接收队列长度(高并发场景) | 165536 |
四、网络调优:网卡绑定(Bonding)提升可用性
网卡绑定(Bonding)将多块物理网卡虚拟为一块逻辑网卡,实现负载均衡或主备冗余,提升网络可用性。
4.1 常用模式
-
mode=0
(负载均衡):流量分散到多网卡,需交换机配置链路聚合; -
mode=1
(主备模式):默认使用主网卡,故障时自动切换到备网卡(常用); -
mode=4
(LACP 聚合):基于 IEEE 802.3ad 协议,动态协商负载均衡(需交换机支持)。
4.2 主备模式配置(nmcli 命令)
# 创建 bond 接口(bond0),主备模式,监测间隔 100ms
nmcli connection add type bond ifname bond0 con-name bond0 miimon 100 mode active-backup primary ens33 ip4 192.168.1.63/24
# 添加从网卡(ens33)到 bond0
nmcli connection add type bond-slave ifname ens33 master bond0
# 添加从网卡(ens38)到 bond0
nmcli connection add type bond-slave ifname ens38 master bond0
- 验证配置 :
cat /proc/net/bonding/bond0
(查看绑定状态及从网卡信息)。
五、总结:调优场景与最佳实践
| | 调优方向 | 核心工具 / 配置文件 | 功能作用 | 关键操作 / 参数说明 | |-----------------|--------------------------|--------------------------------|---------------------------------------------------------------------------------------| | 一、CPU 调优 | cat /proc/cpuinfo
| 查看 CPU 硬件基础信息,为调度策略提供依据 | 直接执行命令,可获取 CPU 核心数、型号、架构、缓存大小等信息 | | | nice
| 调整进程优先级,分配 CPU 资源权重 | 格式:nice -n [优先级值] 进程名
(值范围 -20~19
,值越小,进程优先级越高) | | | taskset
| 设置 CPU 亲和力,绑定进程到指定核心,减少上下文切换开销 | 格式:taskset -c [核心编号] 进程ID
(如 taskset -c 0-1 1234
绑定进程 1234 到 0、1 核) | | | vmstat
| 分析系统整体瓶颈,重点监控 CPU 状态 | 直接执行命令,可查看 CPU 空闲率(id)、上下文切换次数(cs)、等待 I/O 时间(wa)等 | | 二、磁盘 I/O 调优 | ulimit
+ 配置文件 | 限制用户进程资源使用上限,避免单一进程过度占用 I/O 资源 | 配置文件:/etc/security/limits.conf
或 /etc/security/limits.d/
下文件;常用限制:最大文件句柄数(nofile) | | | hdparm
| 测试磁盘读写速度,评估磁盘硬件性能基线 | 常用命令:hdparm -t /dev/sda
(测试 /dev/sda
磁盘的读取速度) | | | time
| 统计命令 / 任务执行时间,验证 I/O 调优效果 | 格式:time [待执行命令]
(如 time dd if=/dev/zero of=/tmp/test bs=1G count=1
,输出任务耗时) | | 三、内核调优 | /etc/sysctl.conf
(配置文件) | 优化内核参数,强化系统安全与高并发能力 | 需执行 sysctl -p
使配置生效 | | | - | 防御 SYN 洪水攻击 | tcp_syncookies=1
(启用 SYN Cookie)、tcp_synack_retries=0
(不重发 SYN+ACK,快速释放半连接) | | | - | 支撑高并发请求 | file-max=[数值]
(提升系统最大文件句柄数)、somaxconn=[数值]
(扩大 TCP 连接队列长度) | |
|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
综上,Linux 系统调优需结合硬件特性与业务需求,通过工具与参数的协同配置,串联 "CPU 资源分配 - 磁盘 I/O 管控 - 内核安全优化" 全流程,最终实现系统性能与稳定性的双重提升。