如何在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.  
  3. # Lots of functions in here to use 
  4. . /usr/lib/tuned/functions 
  5.  
  6. start() {
  7.  [ "$USB_AUTOSUSPEND" = 1 ] && enable_usb_autosuspend 
  8.     enable_wifi_powersave 
  9.     return 0 
  10.  
  11. stop() { 
  12.  
  13.     [ "$USB_AUTOSUSPEND" = 1 ] && disable_usb_autosuspend 
  14.     disable_wifi_powersave 
  15.     return 0 
  16. process $@ 

拓展阅读

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

作者:Stig Sandbeck Mathisen

来源:51CTO

时间: 2024-10-26 05:57:12

如何在RedHat Linux上做性能调优的相关文章

在 RedHat Linux 上做性能调优

在 RedHat Linux 上做性能调优 性能调优的目的是提高系统性能,减少电力消耗,或者减轻某个应用对系统中其它应用的影响.但是如果贸然地,没有适当的手段进行系统调优,那可能会产生负面效果. 如果我们有系统有计划地进行性能调优,那么它就会成为严谨的科学探索而不是随心所欲的艺术行为. 具体方法 首先我们需要弄明白"正常"的系统性能情形是什么样的. 查找潜在的性能问题并进行参数调优来修复.观察这些调整对系统的影响并决定是否确认保持这种调整或者恢复到调整前的状态. 概要: 收集数据,建立

工具-javascript 如何做性能调优

问题描述 javascript 如何做性能调优 chrome 下的调优工具怎么用啊!可以总结一下啊!chrome 下的调优工具怎么用啊!可以总结一下啊!chrome 下的调优工具怎么用啊!可以总结一下啊!chrome 下的调优工具怎么用啊!可以总结一下啊!chrome 下的调优工具怎么用啊!可以总结一下啊! 解决方案 http://zhangyongbluesky.blog.163.com/blog/static/1831941620113155739840/ http://www.cnblog

Java EE应用程序在Glassfish上的性能调优案例分析

Java EE应用的性能问题对严肃的项目和产品来说是一个非常重要的问题.特别是企业级的应用,并发用户多,数据传输量大,业务逻辑复杂,占用系统资源多,因此性能问题在企业级应用变得至关重要,它和系统的稳定性有着直接的联系.更加重要的是,性能好的应用在完成相同任务的条件下,能够占用更少的资源,获得更好的用户体验,换句话说,就是能够节省费用和消耗,获得更高的利润. 要获得更好的性能,就需要对原来的系统进行性能调优.对运行在Glassfish上的JavaEE应用,调优是一件相对复杂的事情.在调优以前必须要

可预见的Oracle应用程序的性能调优

这篇技巧性文章是由"国际Oracle用户组"(IOUG)提供的,它是一个由用户组成的组织,这个组织通过提供高质量的信息.培训.网络和支持,来提高Oracle数据库专家和数据库开发者的水平.这篇文章摘自由David Welch所写的论文<可预见的Oracle应用程序性能调优>.点击这里成为"国际Oracle用户组"的一员,从而获得成千上万的由Oracle用户写的技巧性文章和科技文献. 引言 我们见到过很多带有巨大性能问题的Oracle应用程序和电子商务套件

linux io/系统/内存性能调优整理

 为什么要性能调优? 大部分的linux发行版是为了完全兼容市场中大部分计算机而设计的.这是一个相当混杂的硬件集合(硬盘,显卡,网卡,等等).所以Red Hat, Suse,Mandriva和其他的一些发行版厂商选择了一些保守的设置来确保安装成功. 简单地说:你的发行版运行的很好,但是它可以运行地更好! 比如,可能有一个具体一些特殊特性的高级硬盘,而这些特性在标准配置的情况下可能就没被启用. 磁盘子系统的调优 对于Linux的Ext3/4来说,几乎在所有情况下都有所帮助的一个参数是关闭文件系统访

Informix 11.70系统管理: 性能调优(上)

本教程将了解重要的数据库优化元素,包括检查点.恢复.物理日志.逻辑日志.异步 I/O VP.网络参数.磁盘资源.CPU VP 资源.PDQ.Memory Grant Manager.扫描线程.索引创建.统计信息维护和自助调节.您可以使用此教程(这个 8 部分教程系列中的第 4 部分)帮助为参加 Informix 11.70 考试 919 第 4 部分做好准备. 了解能从本教程获得哪些知识,以及如何最充分地利用它们. 关于本系列 正在考虑获得 Informix 11.70 版的系统管理认证(考试

&lt;Linux性能调优指南&gt;主要思路流程

网上IBM很早放出的一本免费电子书, 十来年了,参考意义还是很大. 国内有翻译成中文在线阅读的版本. 见如下两个URL Linux Performance and Tuning Guidelines <Linux性能调优指南> https://www.gitbook.com/book/lihz1990/transoflptg/details ========================================= 服务器优化思路 管理变更流程 管理变更和性能优化并不直接相关,但可能是

Linux常用性能调优工具索引

blog.yufeng.info  前段时间看到brendangregg的 Linux Performance Analysis and Tools PPT里面提到Linux常用性能调优工具, 见下图: 其中提到了的工具,大部分在我日常工具箱里或者在实践的案例里面使用过, 都有很高的价值,这里方便大家索引下: nicstat: 参见 这里 oprofile: 参见 这里 perf: 参见 这里 systemtap: 参见 这里 iotop: 参见 这里 blktrace: 参见 这里 dstat

如何在Kali Linux上编译Windows漏洞!

Mingw-w64是一个用于创建Windows应用程序的自由和开源软件开发环境. Mingw-w64最初叫Mingw32,它当时不支持64位架构. 在本教程中,我们将讨论如何使用Mingw-64在 Kali Linux上编译Windows漏洞. 让我们开始在Kali Linux上安装Mingw-w64. 1.在Kali Linux上安装Mingw-w64 默认情况下,Kali Linux 2016.2和更低版本上未安装Mingw-w64. 因此,我们需要先安装它,然后才能在Linux上编译Win