RedHat 性能調優
RedHat 性能調優
性能優化是為了提高性能性能,減少資源消耗和應用對系統的影響。如果過早實施,或者沒有性能評估,性能性能優化可能,或者必須導致相反的效果。
但是如果系統的進行,性能優化可以是一門科學,一種藝術。
方法
首先搞清楚什么是“正常”情況。
尋找潛在的性能問題,調整性能參數修復問題,調整后監控系統性能,以決定是保留修改還是回退。
總結:
-
收集數據建立基線
-
啟用優化,選擇合理默認值
-
查看圖表,我們的優化是不是正確選擇?提交或回退
-
確認潛在的性能問題
-
調整優化參數
-
回到 3
在我們開始前建立一個基準
之前和之后的指標
對于具體的指標,通過使用壓力測試程序,你可以快速建基準,以衡量之前和之后的變化。參見 Stress testing with Apache JMeter 早期 sysadvent 日歷測試的例子。
歷史指標
已經你已經有歷史指標,可以利用圖表對歷史資源監控。即便在自動化分析的年代,老的 Mk1 Eyeballis 仍然是很有用的。你需要的是圖表,而不是一屏的數字。
(你也可以給你的老板秀一下漂亮的圖表,如果你老板順道部你上班時間都在干什么。)
你應該用圖形化的方式來查看所提供的服務上的使用情況和響應時間。針對 web 服務器,指標就應該是請求的數量,每次請求響應的時間,還有每次響應消息的大小。
對于 apache 和 nginx,看看《在 apache 和 nginx 中進行日常日志記錄工作》,這篇文章描述了如何將必要的量化指標數據記錄日志。
你應該以圖形化的方式描述其所使用的資源的使用情況,隊列和響應時間。這常常意味著針對磁盤和網絡 IO 的資源圖。以圖形化的方式描述每秒的請求數,還有請求-響應的延遲。
繪圖工具
我有時候會用到 Munin,可以在 EPEL 倉庫找到,這個確實是比較古老,但是比較容易上手,而且插件之多簡直讓人吃驚。Munin 的默認安裝就帶有大量圖的類型,在 contrib 倉庫里還有更多的圖的插件。
作為更新一些的監控方式,Elasticsearch, Logstash 和 Kibana (ELK) 在日志分析和可視化方面非常流行。要把數據推給 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
不同的默認配置都有響應的良好的文檔,如果你希望的話,它們是你進行定制的一個好的起點。
其在物理機器上的默認配置為“吞吐性能” 或者 “各項均衡”, 而虛擬機上則是“虛擬來賓用戶”。
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 的文件語義,還有一個可選的 shell 腳本。
要創建你自己的配置,可以復制其中一個目錄到 /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 能源管理指南》
在性能調優方面,可以讓你從昂貴的服務器上獲得更多的性能方面的好處,可以看看《Red Hat Enterprise Linux 7 性能調優指南》
用千分尺來進行測量
用粉筆來做標記
用斧頭來砍