Linux系统性能调优指南
一、性能调优概述
Linux系统性能调优是一个系统性工程,涉及CPU、内存、磁盘I/O、网络等多个子系统。通过合理的调优,可以显著提升系统的响应速度、吞吐量和稳定性。
性能调优的核心目标:
- 提升吞吐量:单位时间内处理更多请求
- 降低延迟:减少请求响应时间
- 提高稳定性:避免系统在高负载下崩溃
- 优化资源利用率:充分利用硬件资源
二、CPU性能调优
1. 查看CPU信息
# 查看CPU详细信息
cat /proc/cpuinfo
# 查看CPU使用率
top
htop
# 查看每个CPU核心的使用率
mpstat -P ALL 12. CPU调度策略优化
# 查看当前调度策略
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
# 设置为性能模式(适合服务器)
echo performance | tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor
# 设置为节能模式(适合桌面)
echo powersave | tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor3. 进程优先级调整
# 启动时指定优先级(-20最高,19最低)
nice -n -10 ./your_program
# 调整已运行进程的优先级
renice -10 -p
<PID>4. CPU亲和性设置
# 将进程绑定到特定CPU核心
taskset -c 0,1,2,3 -p
<PID>
# 启动时绑定CPU核心
taskset -c 0-3 ./your_program三、内存性能调优
1. 内存使用情况监控
# 查看内存使用情况
free -h
# 详细内存统计
cat /proc/meminfo
# 查看进程内存使用
ps aux --sort=-%mem2. Swappiness调整
# 查看当前swappiness值
cat /proc/sys/vm/swappiness
# 临时设置(值越小,越倾向使用物理内存)
sysctl vm.swappiness=10
# 永久设置(编辑/etc/sysctl.conf)
vm.swappiness=103. 内存缓存优化
# 调整脏页写入磁盘的阈值
sysctl vm.dirty_ratio=10
sysctl vm.dirty_background_ratio=5
# 调整页面缓存压力
sysctl vm.vfs_cache_pressure=504. 大页内存配置
# 查看大页配置
cat /proc/meminfo | grep Huge
# 临时配置大页
sysctl vm.nr_hugepages=1024
# 永久配置(/etc/sysctl.conf)
vm.nr_hugepages=1024四、磁盘I/O性能调优
1. 磁盘I/O监控
# 查看磁盘I/O统计
iostat -x 1
# 查看进程I/O使用
iotop
# 查看磁盘使用情况
df -h
du -sh /*2. I/O调度器优化
# 查看当前调度器
cat /sys/block/sda/queue/scheduler
# 设置为deadline(适合SSD和数据库)
echo deadline > /sys/block/sda/queue/scheduler
# 设置为noop(适合虚拟机)
echo noop > /sys/block/sda/queue/scheduler
# 设置为cfq(适合桌面多任务)
echo cfq > /sys/block/sda/queue/scheduler3. 文件系统优化
# 使用noatime挂载选项(减少磁盘写入)
# /etc/fstab示例:
/dev/sda1 / ext4 defaults,noatime 0 1
# 调整文件系统日志模式
mount -o remount,data=writeback /4. 磁盘队列深度调整
# 查看当前队列深度
cat /sys/block/sda/queue/nr_requests
# 增加队列深度
echo 1024 > /sys/block/sda/queue/nr_requests五、网络性能调优
1. 网络状态监控
# 查看网络连接
netstat -tulnp
ss -tulnp
# 查看网络统计
ifconfig
ip -s link
# 实时网络流量
iftop
nload2. TCP参数优化
# 编辑/etc/sysctl.conf
# 增加TCP连接队列
net.core.somaxconn = 65535
net.core.netdev_max_backlog = 5000
# TCP缓冲区优化
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.ipv4.tcp_rmem = 4096 87380 16777216
net.ipv4.tcp_wmem = 4096 65536 16777216
# TCP连接复用
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_fin_timeout = 30
# 启用TCP BBR拥塞控制
net.core.default_qdisc = fq
net.ipv4.tcp_congestion_control = bbr3. 应用配置生效
# 使配置生效
sysctl -p六、文件描述符优化
1. 查看当前限制
# 查看系统级限制
cat /proc/sys/fs/file-max
# 查看用户级限制
ulimit -n
# 查看进程限制
cat /proc/
<PID>/limits | grep "open files"2. 系统级配置
# /etc/sysctl.conf
fs.file-max = 10000003. 用户级配置
# /etc/security/limits.conf
* soft nofile 65535
* hard nofile 65535
root soft nofile 65535
root hard nofile 655354. 服务配置(systemd)
# 在.service文件中添加
[Service]
LimitNOFILE=65535
LimitNPROC=65535七、常用性能监控工具汇总
| 工具 | 用途 | 安装命令 |
|---|---|---|
| top | 综合系统监控 | 系统自带 |
| htop | 增强版top | apt install htop |
| iostat | 磁盘I/O监控 | apt install sysstat |
| vmstat | 虚拟内存统计 | apt install procps |
| mpstat | CPU统计 | apt install sysstat |
| netstat | 网络连接 | apt install net-tools |
| ss | 现代网络统计 | iproute2 |
| iotop | 进程I/O监控 | apt install iotop |
| iftop | 网络流量 | apt install iftop |
| nload | 网络负载 | apt install nload |
| sar | 系统活动报告 | apt install sysstat |
八、调优最佳实践
1. 调优原则
- 先监控后调优:准确找到性能瓶颈再优化
- 循序渐进:一次只调整一个参数,观察效果
- 基准测试:调优前后进行性能对比
- 文档记录:记录所有修改,便于回滚
2. 常见误区
- ❌ 盲目调整参数,不理解原理
- ❌ 一次修改多个参数,无法定位效果
- ❌ 不做基准测试,无法量化优化效果
- ❌ 忽略业务场景,照搬通用配置
3. 生产环境建议
- 先在测试环境验证调优效果
- 制定回滚方案
- 监控调优后的系统稳定性
- 定期复查和调整参数
总结
Linux性能调优需要结合具体的业务场景和硬件环境,没有万能的配置方案。通过系统的监控、分析和逐步优化,可以让系统发挥出最佳性能。
建议按照以下流程进行调优:
- 建立性能基准线
- 识别性能瓶颈
- 针对性调整参数
- 验证优化效果
- 持续监控和迭代