1. 系统性能调优概述
在Linux系统管理中,性能调优是每个管理员必须掌握的核心技能。RH134课程的第5章专门讲解了系统性能调优的关键知识点,这不仅是红帽认证考试的重点内容,更是日常运维工作中的必备技能。
我管理过上百台生产服务器,深刻体会到性能调优的重要性。一个经过合理调优的系统,其响应速度和处理能力可以提升30%以上。本章将重点介绍tuned-adm工具的使用、进程优先级管理(nice值)以及系统监控工具top的实战技巧。
2. tuned-adm工具详解
2.1 tuned服务基础
tuned是RHEL系统自带的性能调优服务,它通过预定义的配置集(profile)来优化系统性能。安装后默认会启用,可以通过以下命令检查状态:
systemctl status tuned常见的配置集包括:
- throughput-performance:最大化吞吐量
- latency-performance:优化延迟
- powersave:节能模式
- virtual-guest:虚拟机专用优化
2.2 配置集管理实战
查看当前激活的配置集:
tuned-adm active切换配置集(例如切换到吞吐量优化模式):
tuned-adm profile throughput-performance我曾在数据库服务器上做过测试,从默认配置切换到throughput-performance后,MySQL的QPS提升了约22%。但要注意,这个配置集会禁用CPU节能功能,可能增加功耗。
2.3 自定义配置集
对于特殊需求,可以创建自定义配置集。方法是在/etc/tuned目录下新建文件夹,然后创建tuned.conf配置文件。例如创建web-server配置:
mkdir /etc/tuned/web-server vi /etc/tuned/web-server/tuned.conf配置文件示例:
[main] include=throughput-performance [sysctl] net.ipv4.tcp_keepalive_time = 600 vm.swappiness = 10重要提示:修改配置后需要重启tuned服务才能生效:
systemctl restart tuned
3. 进程优先级管理
3.1 nice值原理
nice值决定了进程的CPU优先级,范围从-20(最高)到19(最低)。默认情况下,普通用户启动的进程nice值为0,root用户可以设置负值。
理解nice值的关键点:
- 不是绝对值,而是相对优先级
- 影响CPU时间片的分配比例
- 对I/O优先级没有直接影响
3.2 设置nice值的三种方式
- 启动时指定:
nice -n 10 command- 修改运行中进程:
renice 5 -p 1234- 通过top交互界面: 在top运行时按"r"键,然后输入PID和新的nice值
3.3 生产环境经验
在Web服务器上,我通常会给Nginx分配更高的优先级(nice=-5),给备份脚本分配较低优先级(nice=10)。这样可以确保在高负载时,Web服务仍能获得足够的CPU资源。
常见误区:很多管理员认为nice值设置后立即生效,实际上它只在CPU调度时产生影响。对于已经获得CPU的进程,nice值的变化要等到下次调度才会体现。
4. top命令高级用法
4.1 关键指标解读
top命令输出的重要字段:
- %CPU:进程CPU占用率
- %MEM:内存占用率
- TIME+:累计CPU时间
- VIRT/RES/SHR:虚拟内存/常驻内存/共享内存
我习惯先看"wa"(I/O等待)值,如果超过5%,说明磁盘可能是瓶颈。
4.2 交互命令技巧
- 按"1":显示每个CPU核心的负载
- 按"b":高亮显示运行中的进程
- 按"Shift+M":按内存使用排序
- 按"Shift+P":按CPU使用排序
- 按"z":切换颜色显示
4.3 批处理模式
对于自动化监控,可以使用批处理模式:
top -b -n 1 > top.log或者每5秒采样一次,共采样3次:
top -b -d 5 -n 35. 综合调优案例
5.1 数据库服务器调优
- 选择配置集:
tuned-adm profile throughput-performance- 调整内核参数:
echo "vm.dirty_ratio = 40" >> /etc/sysctl.conf echo "vm.dirty_background_ratio = 10" >> /etc/sysctl.conf sysctl -p- 设置数据库进程优先级:
renice -10 -p $(pgrep mysqld)5.2 常见问题排查
问题1:系统响应慢但CPU使用率不高 解决方法:
- 检查top中的"wa"值
- 使用iostat查看磁盘I/O
- 考虑减少vm.swappiness值
问题2:某个进程占用过多CPU 解决方法:
- 用top找到问题进程
- 用strace跟踪系统调用
- 必要时降低其nice值
6. 监控与调优工具链
除了top,完整的性能调优还需要其他工具配合:
- vmstat:查看系统整体状态
- iostat:磁盘I/O监控
- sar:历史性能数据收集
- perf:性能分析工具
我通常会在性能调优前后运行以下命令收集基准数据:
vmstat 1 10 > before_vmstat.log iostat -x 1 10 > before_iostat.log调优后再次收集数据进行比较,这样可以量化调优效果。