在 RedHat Linux 上做性能调优

简介:

在 RedHat Linux 上做性能调优


性能调优的目的是提高系统性能,减少电力消耗,或者减轻某个应用对系统中其它应用的影响。但是如果贸然地,没有适当的手段进行系统调优,那可能会产生负面效果。

如果我们有系统有计划地进行性能调优,那么它就会成为严谨的科学探索而不是随心所欲的艺术行为。

具体方法

首先我们需要弄明白“正常”的系统性能情形是什么样的。

查找潜在的性能问题并进行参数调优来修复。观察这些调整对系统的影响并决定是否确认保持这种调整或者恢复到调整前的状态。

概要:

  1. 收集数据,建立基准。
  2. 开启 tuned 功能并选择合理的默认值。
  3. 观察图形报告统计,确认所做的调整是否正确。提交更改或回滚恢复。
  4. 确定潜在的性能问题。
  5. 调整优化参数。
  6. 重复步骤3。

在开始性能调优前,首先建立基准

调优前后的衡量标准

你可以在调优前后通过使用“stress tester“来快速为应用建立基准,参见 Stress testing with Apache JMeter 这篇文章中的示例。

使用历史数据的衡量标准

如果你有以前的历史数据作为衡量标准,你可以使用带有图形化报告的资源监控的历史数据。即使在当今这种自动化数据分析手段流行的时代,古老的肉眼观察方式依然非常有用,正因为如此,你需要图形化的展示方式,而不是满眼的数据。

(另外,你可以给你的老板展示美观的图形数据,也许他/她们突然走到你面前问你在花费宝贵的公司时间做什么)

你应该用图形来展示所提供服务的资源使用度情况和反应时间。对于 web server 来说,这可能是请求的数量,每个请求的反应时间,以及每个响应的数据量大小。

对于 apache 和 nginx 来说,请参见 Logging elapse time in apache and nginx,这篇文章描述了如何记录需要的数量。

munin disk graph

你应该图形化这些应用对资源的使用度,队列以及响应时间。通常来说是对网络和磁盘的 IO 进行图形化展示。

图形化每秒的请求数量以及请求响应延迟。

用于图形化展示的工具

我个人喜欢用 Munin。这个工具可以在 EPEL 仓库找到。这个工具绝对称得上“老式的”,但它非常容易上手,而且它还有非常丰富的插件可供使用。在你安装使用 Munin 上,它会默认安装许多图形化工具。如果你需要更多的图形化插件,你可以在 contrib 仓库上找到它们。

对于一些更先进的监控工具,Elasticsearch,Logstash 和 Kibana 在日志分析和可视化展示方面更受欢迎。设置 ELK 来加载所需要监控的数据,使用 Topbeat 作为资源使用度衡量标准,使用 Filebeat 作为实时日志文件分析,使用 Packetbeat 来分析在线网络数据。

可选的工具有很多,选用你所了解的,喜欢的或者你想学习的。你需要记住的最重要的事情是:确保在你开始修改操作前知道你的基准数据。

性能调优工具

tuna

tuna 可以用来控制进程及其调度关系。

例如:在一个健状的系统上却有差的网络性能,并且可以观察到有几个处理核心处于空闲状态。通过检查网卡发现多工调度队列功能已开启,而且它们已经分布在所有可用的处理核心上。

此处假设这些网卡命名为“enp1s0f0“和”enp1s0f1“:


   
   
  1. [root@golem ~]# tuna --irq 'enp1s0f*' --socket 0 --spread --show_irqs
  2. # users affinity
  3. 69 enp1s0f0 0 igb
  4. 70 enp1s0f0-rx-0 1 igb
  5. 71 enp1s0f0-rx-1 2 igb
  6. 72 enp1s0f0-rx-2 3 igb
  7. 73 enp1s0f0-rx-3 4 igb
  8. 74 enp1s0f0-tx-0 5 igb
  9. 75 enp1s0f0-tx-1 6 igb
  10. 76 enp1s0f0-tx-2 7 igb
  11. 77 enp1s0f0-tx-3 0 igb
  12. 79 enp1s0f1 1 igb
  13. 80 enp1s0f1-rx-0 2 igb
  14. 81 enp1s0f1-rx-1 3 igb
  15. 82 enp1s0f1-rx-2 4 igb
  16. 83 enp1s0f1-rx-3 5 igb
  17. 84 enp1s0f1-tx-0 6 igb
  18. 85 enp1s0f1-tx-1 7 igb
  19. 86 enp1s0f1-tx-2 0 igb
  20. 87 enp1s0f1-tx-3 1 igb

对于拥有多块 CPU 的系统,你可以把你喜欢的进程移到某块 CPU 上,并且把网络管理移到另一个上。

tuned

tuned 这个工具已经在 Red Hat 的多个发行版中可用。

tuned 带有多种调优预置配置;用于各种通用服务器的合理的默认配置。用于“虚拟用户”的配置,用于“虚拟主机”的配置,还有用于“高吞吐量”或者“低延迟”的预置配置。他们应该对更进一步的应用提供初始配置。例如:


   
   
  1. [root@golem ~]# tuned-adm list
  2. - balanced
  3. - desktop
  4. - latency-performance
  5. - network-latency
  6. - network-throughput
  7. - powersave
  8. - throughput-performance
  9. - virtual-guest
  10. - virtual-host
  11. Current active profile: throughput-performance

不同的默认预置配置有着健全的文档,而且如果你想自定义的话,有初始配置文件可供使用。

在物理机上默认的预置配置是“throughput-performance“或者”balanced“,在虚拟机上的默认预置配置是”virtual-guest“。

tuned 的默认预置配置在 /usr/lib/tuned 目录下。


   
   
  1. [root@golem ~]# tree /usr/lib/tuned
  2. /usr/lib/tuned
  3. |-- balanced
  4. | `-- tuned.conf
  5. |-- desktop
  6. | `-- tuned.conf
  7. |-- functions
  8. |-- latency-performance
  9. | `-- tuned.conf
  10. |-- network-latency
  11. | `-- tuned.conf
  12. |-- network-throughput
  13. | `-- tuned.conf
  14. |-- powersave
  15. | |-- script.sh
  16. | `-- tuned.conf
  17. |-- recommend.conf
  18. |-- throughput-performance
  19. | `-- tuned.conf
  20. |-- virtual-guest
  21. | `-- tuned.conf
  22. `-- virtual-host
  23. `-- tuned.conf

每个配置包括一个 tuned.conf 文件,这个文件带有 INI 文件语义格式和一个可选的脚本解释器。

如果想生成一个自定义的配置文件,你可以拷贝这些目录里的一个文件到 /etc/tuned 目录,做必要的修改并激活使用。


   
   
  1. [root@golem ~]# cp -a /usr/lib/tuned/throughput-performance /etc/tuned/wonderprofile
  2. [root@golem ~]# vim /etc/tuned/wonderprofile/tuned.conf
  3. [root@golem ~]# tuned-adm profile wonderprofile

例如:/etc/tuned/wonderprofile/tuned.conf文件,对它进行少量调整。


   
   
  1. [main]
  2. include=throughput-performance
  3. [sysctl]
  4. net.ipv4.tcp_rmem="4096 87380 16777216"
  5. net.ipv4.tcp_wmem="4096 16384 16777216"
  6. net.ipv4.udp_mem="3145728 4194304 16777216"

同样对/etc/tuned/wonderprofile/script.sh进行调整。


   
   
  1. #!/bin/sh
  2. # Lots of functions in here to use
  3. . /usr/lib/tuned/functions
  4. start() {
  5. [ "$USB_AUTOSUSPEND" = 1 ] && enable_usb_autosuspend
  6. enable_wifi_powersave
  7. return 0
  8. }
  9. stop() {
  10. [ "$USB_AUTOSUSPEND" = 1 ] && disable_usb_autosuspend
  11. disable_wifi_powersave
  12. return 0
  13. }
  14. process $@

拓展阅读

我只是提及了很少的系统管理员工具。Red Hat 有丰富的文档展示如何调优以及如何衡量(或者其它的方式),使用比我所提到的更多的工具。

对于电源管理方面,例如即使你忘了在家充电也可以使你的笔记本电脑在工作时间使用,请参见 Red Hat Enterprise Linux 7 Power Management Guide

对于性能调优,想使你的昂贵的服务器焕发更多的活力,参见 Red Hat Enterprise Linux 7 Performance Tuning Guide

”用微米测量,却用粉笔标记,用斧子切割“ (警醒:不能犯这样的错误。)












本文来自云栖社区合作伙伴“Linux中国”
原文发布时间为:2013-04-02.

相关文章
|
1月前
|
缓存 算法 Linux
深入理解Linux内核调度器:公平性与性能的平衡####
真知灼见 本文将带你深入了解Linux操作系统的核心组件之一——完全公平调度器(CFS),通过剖析其设计原理、工作机制以及在实际系统中的应用效果,揭示它是如何在众多进程间实现资源分配的公平性与高效性的。不同于传统的摘要概述,本文旨在通过直观且富有洞察力的视角,让读者仿佛亲身体验到CFS在复杂系统环境中游刃有余地进行任务调度的过程。 ####
50 6
|
4月前
|
缓存 监控 网络协议
掌控全局:Linux 系统性能调优技巧全面指南
掌控全局:Linux 系统性能调优技巧全面指南
|
7天前
|
运维 监控 Linux
BPF及Linux性能调试探索初探
BPF技术从最初的网络数据包过滤发展为强大的系统性能优化工具,无需修改内核代码即可实现实时监控、动态调整和精确分析。本文深入探讨BPF在Linux性能调试中的应用,介绍bpftune和BPF-tools等工具,并通过具体案例展示其优化效果。
36 14
|
1月前
|
人工智能 Java 关系型数据库
Red Hat Enterprise Linux 9.5 发布下载,新增功能亮点概述
Red Hat Enterprise Linux 9.5 发布下载,新增功能亮点概述
72 4
Red Hat Enterprise Linux 9.5 发布下载,新增功能亮点概述
|
13天前
|
存储 缓存 网络协议
Linux操作系统的内核优化与性能调优####
本文深入探讨了Linux操作系统内核的优化策略与性能调优方法,旨在为系统管理员和高级用户提供一套实用的指南。通过分析内核参数调整、文件系统选择、内存管理及网络配置等关键方面,本文揭示了如何有效提升Linux系统的稳定性和运行效率。不同于常规摘要仅概述内容的做法,本摘要直接指出文章的核心价值——提供具体可行的优化措施,助力读者实现系统性能的飞跃。 ####
|
25天前
|
缓存 Ubuntu Linux
Linux环境下测试服务器的DDR5内存性能
通过使用 `memtester`和 `sysbench`等工具,可以有效地测试Linux环境下服务器的DDR5内存性能。这些工具不仅可以评估内存的读写速度,还可以检测内存中的潜在问题,帮助确保系统的稳定性和性能。通过合理配置和使用这些工具,系统管理员可以深入了解服务器内存的性能状况,为系统优化提供数据支持。
31 4
|
1月前
|
存储 监控 安全
Linux内核调优的艺术:从基础到高级###
本文深入探讨了Linux操作系统的心脏——内核的调优方法。文章首先概述了Linux内核的基本结构与工作原理,随后详细阐述了内核调优的重要性及基本原则。通过具体的参数调整示例(如sysctl、/proc/sys目录中的设置),文章展示了如何根据实际应用场景优化系统性能,包括提升CPU利用率、内存管理效率以及I/O性能等关键方面。最后,介绍了一些高级工具和技术,如perf、eBPF和SystemTap,用于更深层次的性能分析和问题定位。本文旨在为系统管理员和高级用户提供实用的内核调优策略,以最大化Linux系统的效率和稳定性。 ###
|
1月前
|
监控 网络协议 算法
Linux内核优化:提升系统性能与稳定性的策略####
本文深入探讨了Linux操作系统内核的优化策略,旨在通过一系列技术手段和最佳实践,显著提升系统的性能、响应速度及稳定性。文章首先概述了Linux内核的核心组件及其在系统中的作用,随后详细阐述了内存管理、进程调度、文件系统优化、网络栈调整及并发控制等关键领域的优化方法。通过实际案例分析,展示了这些优化措施如何有效减少延迟、提高吞吐量,并增强系统的整体健壮性。最终,文章强调了持续监控、定期更新及合理配置对于维持Linux系统长期高效运行的重要性。 ####
|
1月前
|
人工智能 安全 Linux
|
1月前
|
消息中间件 Linux RocketMQ
在Red Hat Enterprise Linux 9上使用Docker快速安装并部署
通过以上步骤,你可以在Red Hat Enterprise Linux 9上使用Docker快速安装并部署RocketMQ。这种方法不仅简化了安装过程,还提供了一个灵活的环境来管理和扩展消息队列系统。RocketMQ作为一款高性能的分布式消息系统,通过Docker可以实现快速部署和高效管理。
70 2