如何有效进行RedHat性能调优?

    作者:课课家教育更新于: 2015-12-31 14:27:12

      性能调优是为了提高系统的性能,减少能量的使用或者是减轻应用对其他部分的影响。如果贸然的调优,或者没有任何测量,当然性能调优也许会有不好的影响。

    如何有效进行RedHat性能调优?_linux_课课家

      但是系统性的性能调优比专注一点调优更加科学。

      方法

      首先弄清楚“正常的”状态是什么。

      寻找潜在的性能问题,通过调节性能参数来解决这些问题。调整后看看系统怎么样,然后决定保持调整还是回滚。

      总结:

      首先收集数据找准方向。

      启动调优,并选择一个合理的默认值

      看看结果,我们的选择是否正确?然后,提交或回归。

      找出潜在的性能问题。

      调整调优参数

      回到第三步

      开始之前,先设定标准

      之前和之后的度量

      由于有了特定的度量,在改变之前和之后使用“压力测试”很快就可以为你的应用设定标准。可以看看使用 Apache Jmeter 进行压力测试的文章,是关于早期的 sysadvent 日历的例子。

      水平度量

      如果你可以使用图表进行水平资源监视。即使在自动化分析的今天,以前的 Mk1 Eyeball 仍然是非常有用的,为此,你需要的是图表,而不是满屏的数据。

      (当然,你可以把这些图表给你的老板看看,免得他们觉得你在公司吃闲饭)

      你应该用图形化的方式来查看所提供的服务上的使用情况和响应时间。针对 web 服务器,指标就应该是请求的数量,每次请求响应的时间,还有每次响应消息的大小。

      对于 apache 和 nginx,看看《在 apache 和 nginx 中进行日常日志记录工作》,这篇文章描述了如何将必要的量化指标数据记录日志。

      你应该以图形化的方式描述其所使用的资源的使用情况,队列和响应时间。这常常意味着针对磁盘和网络 IO 的资源图。以图形化的方式描述每秒的请求数,还有请求-响应的延迟。

      用于图形化展示的工具

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

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

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

      性能调优工具

      tuna

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

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

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

      [root@golem ~]# tuna --irq 'enp1s0f*' --socket 0 --spread --show_irqs

      # users affinity

      69 enp1s0f0 0 igb

      70 enp1s0f0-rx-0 1 igb

      71 enp1s0f0-rx-1 2 igb

      72 enp1s0f0-rx-2 3 igb

      73 enp1s0f0-rx-3 4 igb

      74 enp1s0f0-tx-0 5 igb

      75 enp1s0f0-tx-1 6 igb

      76 enp1s0f0-tx-2 7 igb

      77 enp1s0f0-tx-3 0 igb

      79 enp1s0f1 1 igb

      80 enp1s0f1-rx-0 2 igb

      81 enp1s0f1-rx-1 3 igb

      82 enp1s0f1-rx-2 4 igb

      83 enp1s0f1-rx-3 5 igb

      84 enp1s0f1-tx-0 6 igb

      85 enp1s0f1-tx-1 7 igb

      86 enp1s0f1-tx-2 0 igb

      87 enp1s0f1-tx-3 1 igb

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

      tuned

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

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

      [root@golem ~]# tuned-adm list

      - balanced

      - desktop

      - latency-performance

      - network-latency

      - network-throughput

      - powersave

      - throughput-performance

      - virtual-guest

      - virtual-host

      Current active profile: throughput-performance

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

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

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

      [root@golem ~]# tree /usr/lib/tuned

      /usr/lib/tuned

      |-- balanced

      | `-- tuned.conf

      |-- desktop

      | `-- tuned.conf

      |-- functions

      |-- latency-performance

      | `-- tuned.conf

      |-- network-latency

      | `-- tuned.conf

      |-- network-throughput

      | `-- tuned.conf

      |-- powersave

      | |-- script.sh

      | `-- tuned.conf

      |-- recommend.conf

      |-- throughput-performance

      | `-- tuned.conf

      |-- virtual-guest

      | `-- tuned.conf

      `-- virtual-host

      `-- tuned.conf

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

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

      [root@golem ~]# cp -a /usr/lib/tuned/throughput-performance /etc/tuned/wonderprofile

      [root@golem ~]# vim /etc/tuned/wonderprofile/tuned.conf

      [root@golem ~]# tuned-adm profile wonderprofile

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

      [main]

      include=throughput-performance

      [sysctl]

      net.ipv4.tcp_rmem="4096 87380 16777216"

      net.ipv4.tcp_wmem="4096 16384 16777216"

      net.ipv4.udp_mem="3145728 4194304 16777216"

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

      #!/bin/sh

      # Lots of functions in here to use

      . /usr/lib/tuned/functions

      start() {

      [ "$USB_AUTOSUSPEND" = 1 ] && enable_usb_autosuspend

      enable_wifi_powersave

      return 0

      }

      stop() {

      [ "$USB_AUTOSUSPEND" = 1 ] && disable_usb_autosuspend

      disable_wifi_powersave

      return 0

      }

      process $@

课课家教育

未登录

1