sar命令用用收集、報(bào)告、或者保存 UNIX / Linux 系統(tǒng)的活動(dòng)信息。它保存選擇的計(jì)數(shù)器到操作系統(tǒng)的/var/log/sa/sadd文件中。從收集的數(shù)據(jù)中,你可以得到許多關(guān)于你的服務(wù)器的信息:
CPU 使用率
內(nèi)存頁(yè)面和使用率
網(wǎng)絡(luò) I/O 和傳輸統(tǒng)計(jì)
進(jìn)程創(chuàng)建活動(dòng)
所有的塊設(shè)備活動(dòng)
每秒中斷數(shù)等等
sar命令的輸出能夠用于識(shí)別服務(wù)器瓶頸。但是,分析sar命令提供的信息可能比較困難,所以要使用 kSar 工具。kSar 工具可以將sar命令的輸出繪制成基于時(shí)間周期的、易于理解的圖表。
sysstat 包
sar、sa1、和sa2命令都是 sysstat 包的一部分。它是 Linux 包含的性能監(jiān)視工具集合。
sar:顯示數(shù)據(jù)
sa1和sa2:收集和保存數(shù)據(jù)用于以后分析。sa2shell 腳本在/var/log/sa目錄中每日寫(xiě)入一個(gè)報(bào)告。sa1shell 腳本將每日的系統(tǒng)活動(dòng)信息以二進(jìn)制數(shù)據(jù)的形式寫(xiě)入到文件中。
sadc —— 系統(tǒng)活動(dòng)數(shù)據(jù)收集器。你可以通過(guò)修改sa1和sa2腳本去配置各種選項(xiàng)。它們位于以下的目錄:
/usr/lib64/sa/sa1(64 位)或者/usr/lib/sa/sa1(32 位) —— 它調(diào)用sadc去記錄報(bào)告到/var/log/sa/sadX格式。
/usr/lib64/sa/sa2(64 位)或者/usr/lib/sa/sa2(32 位) —— 它調(diào)用sar去記錄報(bào)告到/var/log/sa/sarX格式。
如何在我的系統(tǒng)上安裝 sar?
在一個(gè)基于 CentOS/RHEL 的系統(tǒng)上,輸入如下的yum 命令去安裝 sysstat:
Loaded plugins: downloadonly,fastestmirror,priorities,
: protectbase,security
Loading mirror speeds from cached hostfile
*addons: mirror.cs.vt.edu
*base: mirror.ash.fastserv.com
*epel: serverbeach1.fedoraproject.org
*extras: mirror.cogentco.com
*updates: centos.mirror.nac.net
0packages excluded due torepository protections
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Packagesysstat.x86_640:7.0.2-3.el5set tobe updated
--> Finished Dependency Resolution
Dependencies Resolved
====================================================================
PackageArchVersion Repository Size
====================================================================
Installing:
sysstatx86_647.0.2-3.el5 base173k
Transaction Summary
====================================================================
Install1Package(s)
Update 0Package(s)
Remove 0Package(s)
Total download size: 173k
Isthisok[y/N]: y
Downloading Packages:
sysstat-7.0.2-3.el5.x86_64.rpm | 173kB 00:00
Running rpm_check_debug
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
Installing : sysstat1/1
Installed:
sysstat.x86_640:7.0.2-3.el5
Complete!
為 sysstat 配置文件
編輯 /etc/sysconfig/sysstat 文件去指定日志文件保存多少天(最長(zhǎng)為一個(gè)月):
# vi /etc/sysconfig/sysstat
示例輸出如下 :
# keep log for 28 days
# the default is 7
HISTORY=28
保存并關(guān)閉這個(gè)文件。
找到 sar 默認(rèn)的 cron 作業(yè)
默認(rèn)的 cron 作業(yè)位于 /etc/cron.d/sysstat:
# cat /etc/cron.d/sysstat
示例輸出如下:
# run system activity accounting tool every 10 minutes
*/10 * * * * root /usr/lib64/sa/sa111
# generate a daily summary of process accounting at 23:53
5323 * * * root /usr/lib64/sa/sa2 -A
告訴 sadc 去報(bào)告磁盤(pán)的統(tǒng)計(jì)數(shù)據(jù)
使用一個(gè)文本編輯器去編輯 /etc/cron.d/sysstat 文件,比如使用 vim 命令,輸入如下:
# vi /etc/cron.d/sysstat
像下面的示例那樣更新這個(gè)文件,以記錄所有的硬盤(pán)統(tǒng)計(jì)數(shù)據(jù)(-d 選項(xiàng)強(qiáng)制記錄每個(gè)塊設(shè)備的統(tǒng)計(jì)數(shù)據(jù),而 -I 選項(xiàng)強(qiáng)制記錄所有系統(tǒng)中斷的統(tǒng)計(jì)數(shù)據(jù)):
# run system activity accounting tool every 10 minutes
*/10 * * * * root /usr/lib64/sa/sa1 -I -d11
# generate a daily summary of process accounting at 23:53
5323 * * * root /usr/lib64/sa/sa2 -A
在 CentOS/RHEL 7.x 系統(tǒng)上你需要傳遞-S DISK選項(xiàng)去收集塊設(shè)備的數(shù)據(jù)。傳遞-S XALL選項(xiàng)去采集如下所列的數(shù)據(jù):
磁盤(pán)
分區(qū)
系統(tǒng)中斷
SNMP
IPv6
# Run system activity accounting tool every 10 minutes
*/10 * * * * root /usr/lib64/sa/sa1 -SDISK11
# 0 * * * * root /usr/lib64/sa/sa1 600 6 &
# Generate a daily summary of process accounting at 23:53
5323 * * * root /usr/lib64/sa/sa2 -A
# Run system activity accounting tool every 10 minutes
保存并關(guān)閉這個(gè)文件。
打開(kāi) CentOS/RHEL 版本 5.x/6.x 的服務(wù)
輸入如下命令:
chkconfig sysstat on
service sysstat start
示例輸出如下:
Calling the system activity data collector(sadc):
對(duì)于 CentOS/RHEL 7.x,運(yùn)行如下的命令:
# systemctl enable sysstat
# systemctl start sysstat.service
# systemctl status sysstat.service
示例輸出:
●sysstat.service - Resets System Activity Logs
Loaded: loaded(/usr/lib/systemd/system/sysstat.service;enabled;vendor preset: enabled)
Active: active(exited)since Sat2018-01-0616:33:19IST;3sago
Process: 28297ExecStart=/usr/lib64/sa/sa1 --boot(code=exited,status=0/SUCCESS)
Main PID: 28297(code=exited,status=0/SUCCESS)
Jan0616:33:19centos7-box systemd[1]: Starting Resets System Activity Logs...
Jan0616:33:19centos7-box systemd[1]: Started Resets System Activity Logs.
如何使用 sar?如何查看統(tǒng)計(jì)數(shù)據(jù)?
使用 sar 命令去顯示操作系統(tǒng)中選定的累積活動(dòng)計(jì)數(shù)器輸出。在這個(gè)示例中,運(yùn)行 sar 命令行,去實(shí)時(shí)獲得 CPU 使用率的報(bào)告:
# sar -u 3 10
示例輸出:
Linux2.6.18-164.2.1.el5(www-03.nixcraft.in) 12/14/2009
09:49:47PM CPU %user %nice %system %iowait %steal %idle
09:49:50PM all5.660.001.220.040.0093.08
09:49:53PM all12.290.001.930.040.0085.74
09:49:56PM all9.300.001.610.000.0089.10
09:49:59PM all10.860.001.510.040.0087.58
09:50:02PM all14.210.003.270.040.0082.47
09:50:05PM all13.980.004.040.040.0081.93
09:50:08PM all6.606.891.260.000.0085.25
09:50:11PM all7.250.001.550.040.0091.15
09:50:14PM all6.610.001.090.000.0092.31
09:50:17PM all5.710.000.960.000.0093.33
Average: all9.240.691.840.030.0088.20
其中:
3 表示間隔時(shí)間
10 表示次數(shù)
查看進(jìn)程創(chuàng)建的統(tǒng)計(jì)數(shù)據(jù),輸入:
# sar -c 3 10
查看 I/O 和傳輸率統(tǒng)計(jì)數(shù)據(jù),輸入:
# sar -b 3 10
查看內(nèi)存頁(yè)面統(tǒng)計(jì)數(shù)據(jù),輸入:
# sar -B 3 10
查看塊設(shè)備統(tǒng)計(jì)數(shù)據(jù),輸入:
# sar -d 3 10
查看所有中斷的統(tǒng)計(jì)數(shù)據(jù),輸入:
# sar -I XALL 3 10
查看網(wǎng)絡(luò)設(shè)備特定的統(tǒng)計(jì)數(shù)據(jù),輸入:
# sar -n DEV 3 10
# sar -n EDEV 3 10
查看 CPU 特定的統(tǒng)計(jì)數(shù)據(jù),輸入:
# sar -P ALL
# Only 1st CPU stats
# sar -P 1 3 10
查看隊(duì)列長(zhǎng)度和平均負(fù)載的統(tǒng)計(jì)數(shù)據(jù),輸入:
# sar -q 3 10
查看內(nèi)存和交換空間的使用統(tǒng)計(jì)數(shù)據(jù),輸入:
# sar -r 3 10
# sar -R 3 10
查看 inode、文件、和其它內(nèi)核表統(tǒng)計(jì)數(shù)據(jù)狀態(tài),輸入:
# sar -v 3 10
查看系統(tǒng)切換活動(dòng)統(tǒng)計(jì)數(shù)據(jù),輸入:
# sar -w 3 10
查看交換統(tǒng)計(jì)數(shù)據(jù),輸入:
# sar -W 3 10
查看一個(gè) PID 為 3256 的 Apache 進(jìn)程,輸入:
# sar -x 3256 3 10
kSar 介紹
sar和sadf提供了基于命令行界面的輸出。這種輸出可能會(huì)使新手用戶(hù)/系統(tǒng)管理員感到無(wú)從下手。因此,你需要使用 kSar,它是一個(gè)圖形化顯示你的sar數(shù)據(jù)的 Java 應(yīng)用程序。它也允許你以 PDF/JPG/PNG/CSV 格式導(dǎo)出數(shù)據(jù)。你可以用三種方式去加載數(shù)據(jù):本地文件、運(yùn)行本地命令、以及通過(guò) SSH 遠(yuǎn)程運(yùn)行的命令。kSar 可以處理下列操作系統(tǒng)的sar輸出:
Solaris 8, 9 和 10
Mac OS/X 10.4+
Linux (Systat Version >= 5.0.5)
AIX (4.3 & 5.3)
HPUX 11.00+
下載和安裝 kSar
訪問(wèn)官方網(wǎng)站去獲得最新版本的源代碼。使用wget去下載源代碼,輸入:
$wget https://github.com/vlsi/ksar/releases/download/v5.2.4-snapshot-652bf16/ksar-5.2.4-SNAPSHOT-all.jar
如何運(yùn)行 kSar?
首先要確保你的機(jī)器上 JAVA jdk 已安裝并能夠正常工作。輸入下列命令去啟動(dòng) kSar:
$java -jar ksar-5.2.4-SNAPSHOT-all.jar
接下來(lái)你將看到 kSar 的主窗口,和有兩個(gè)菜單的面板。
左側(cè)有一個(gè)列表,是 kSar 根據(jù)數(shù)據(jù)已經(jīng)解析出的可用圖表的列表。右側(cè)窗口將展示你選定的圖表。
如何使用 kSar 去生成 sar 圖表?
首先,你需要從命名為 server1 的服務(wù)器上采集sar命令的統(tǒng)計(jì)數(shù)據(jù)。輸入如下的命令:
[server1]# LC_ALL=C sar -A> /tmp/sar.data.txt
接下來(lái),使用 scp 命令從本地桌面拷貝到遠(yuǎn)程電腦上:
[desktop]$scp user@server1.nixcraft.com:/tmp/sar.data.txt /tmp/
切換到 kSar 窗口,點(diǎn)擊 “Data” > “Load data from text file” > 從/tmp/中選擇sar.data.txt> 點(diǎn)擊 “Open” 按鈕。
現(xiàn)在,圖表類(lèi)型樹(shù)已經(jīng)出現(xiàn)在左側(cè)面板中并選定了一個(gè)圖形:
放大和縮小
通過(guò)移動(dòng)你可以交互式縮放圖像的一部分。在要縮放的圖像的左上角點(diǎn)擊并按下鼠標(biāo),移動(dòng)到要縮放區(qū)域的右下角,可以選定要縮放的區(qū)域。返回到未縮放狀態(tài),點(diǎn)擊并拖動(dòng)鼠標(biāo)到除了右下角外的任意位置,你也可以點(diǎn)擊并選擇 zoom 選項(xiàng)。
了解 kSar 圖像和 sar 數(shù)據(jù)
我強(qiáng)烈建議你去閱讀sar和sadf命令的 man 頁(yè)面:
$man sar
$man sadf
案例學(xué)習(xí):識(shí)別 Linux 服務(wù)器的 CPU 瓶頸
使用sar命令和 kSar 工具,可以得到內(nèi)存、CPU、以及其它子系統(tǒng)的詳細(xì)快照。例如,如果 CPU 使用率在一個(gè)很長(zhǎng)的時(shí)間內(nèi)持續(xù)高于 80%,有可能就是出現(xiàn)了一個(gè) CPU 瓶頸。使用sar -x ALL你可以找到大量消耗 CPU 的進(jìn)程。
mpstat 命令的輸出(sysstat 包的一部分)也會(huì)幫你去了解 CPU 的使用率。但你可以使用 kSar 很容易地去分析這些信息。
找出 CPU 瓶頸后 …
對(duì) CPU 執(zhí)行如下的調(diào)整:
確保沒(méi)有不需要的進(jìn)程在后臺(tái)運(yùn)行。關(guān)閉Linux 上所有不需要的服務(wù)。
使用cron在一個(gè)非高峰時(shí)刻運(yùn)行任務(wù)(比如,備份)。
使用top 和 ps 命令去找出所有非關(guān)鍵的后臺(tái)作業(yè)/服務(wù)。使用renice 命令去調(diào)整低優(yōu)先級(jí)作業(yè)。
使用taskset 命令去設(shè)置進(jìn)程使用的 CPU(卸載所使用的 CPU),即,綁定進(jìn)程到不同的 CPU 上。例如,在 2# CPU 上運(yùn)行 MySQL 數(shù)據(jù)庫(kù),而在 3# CPU 上運(yùn)行 Apache。
確保你的系統(tǒng)使用了最新的驅(qū)動(dòng)程序和固件。
如有可能在系統(tǒng)上增加額外的 CPU。
為單線程應(yīng)用程序使用更快的 CPU(比如,Lighttpd web 服務(wù)器應(yīng)用程序)。
為多線程應(yīng)用程序使用多個(gè) CPU(比如,MySQL 數(shù)據(jù)庫(kù)服務(wù)器應(yīng)用程序)。
為一個(gè) web 應(yīng)用程序使用多個(gè)計(jì)算節(jié)點(diǎn)并設(shè)置一個(gè)負(fù)載均衡器。
isag —— 交互式系統(tǒng)活動(dòng)記錄器(替代工具)
isag命令圖形化顯示了以前運(yùn)行sar命令時(shí)存儲(chǔ)在二進(jìn)制文件中的系統(tǒng)活動(dòng)數(shù)據(jù)。isag命令引用sar并提取出它的數(shù)據(jù)來(lái)繪制圖形。與 kSar 相比,isag的選項(xiàng)比較少。
-
Linux
+關(guān)注
關(guān)注
87文章
11304瀏覽量
209521 -
命令
+關(guān)注
關(guān)注
5文章
684瀏覽量
22027
原文標(biāo)題:使用 sar 和 kSar 來(lái)發(fā)現(xiàn) Linux 性能瓶頸
文章出處:【微信號(hào):LinuxHub,微信公眾號(hào):Linux愛(ài)好者】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論