RedHat 效能調優指南

oschina發表於2015-12-29

效能調優是為了提高系統的效能,減少能量的使用或者是減輕應用對其他部分的影響。如果貿然的調優,或者沒有任何測量,當然效能調優也許會有不好的影響。

但是系統性的效能調優比專注一點調優更加科學。

方法

首先弄清楚“正常的”狀態是什麼。

尋找潛在的效能問題,通過調節效能引數來解決這些問題。調整後看看系統怎麼樣,然後決定保持調整還是回滾。

總結:

  1. 首先收集資料找準方向。
  2. 啟動調優,並選擇一個合理的預設值
  3. 看看結果,我們的選擇是否正確?然後,提交或迴歸。
  4. 找出潛在的效能問題。
  5. 調整調優引數
  6. 回到第第三步

開始之前,先設定標準

之前和之後的度量

由於有了特定的度量,在改變之前和之後使用“壓力測試”很快就可以為你的應用設定標準。可以看看使用 Apache Jmeter 進行壓力測試的文章,是關於早期的 sysadvent 日曆的例子。

水平度量

如果你可以使用圖表進行水平資源監視。即使在自動化分析的今天,以前的 Mk1 Eyeball 仍然是非常有用的,為此,你需要的是圖表,而不是滿屏的資料。

(當然,你可以把這些圖表給你的老闆看看,免得他們覺得你在公司吃閒飯)

你應該用圖形化的方式來檢視所提供的服務上的使用情況和響應時間。針對 web 伺服器,指標就應該是請求的數量,每次請求響應的時間,還有每次響應訊息的大小。

對於 apache 和 nginx,看看《在 apache 和 nginx 中進行日常日誌記錄工作》,這篇文章描述瞭如何將必要的量化指標資料記錄日誌。

RedHat 效能調優

你應該以圖形化的方式描述其所使用的資源的使用情況,佇列和響應時間。這常常意味著針對磁碟和網路 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 $@

擴充閱讀

我只是提及了很少的系統管理員工具。Red Hat 有豐富的文件展示如何調優以及如何衡量(或者其它的方式),使用比我所提到的更多的工具。

對於電源管理方面,例如即使你忘了在家充電也可以使你的膝上型電腦在工作時間使用,請參見 Red Hat Enterprise Linux 7 Power Management Guide

對於效能調優,想使你的昂貴的伺服器煥發更多的活力,參見 Red Hat Enterprise Linux 7 Performance Tuning Guide

”用微米測量,卻用粉筆標記,用斧子切割“ (警醒:不能犯這樣的錯誤。)

相關文章