這篇文章主要為大家展示了“怎么使用sar和kSar來發(fā)現Linux性能瓶頸”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“怎么使用sar和kSar來發(fā)現Linux性能瓶頸”這篇文章吧。
成都創(chuàng)新互聯是一家網站設計公司,集創(chuàng)意、互聯網應用、軟件技術為一體的創(chuàng)意網站建設服務商,主營產品:成都響應式網站建設公司、成都品牌網站建設、營銷型網站建設。我們專注企業(yè)品牌在網站中的整體樹立,網絡互動的體驗,以及在手機等移動端的優(yōu)質呈現。網站設計制作、網站建設、移動互聯產品、網絡運營、VI設計、云產品.運維為核心業(yè)務。為用戶提供一站式解決方案,我們深知市場的競爭激烈,認真對待每位客戶,為客戶提供賞析悅目的作品,網站的價值服務。
sar
命令用用收集、報告、或者保存 UNIX / Linux 系統(tǒng)的活動信息。它保存選擇的計數器到操作系統(tǒng)的 /var/log/sa/sadd
文件中。從收集的數據中,你可以得到許多關于你的服務器的信息:
CPU 使用率
內存頁面和使用率
網絡 I/O 和傳輸統(tǒng)計
進程創(chuàng)建活動
所有的塊設備活動
每秒中斷數等等
sar
命令的輸出能夠用于識別服務器瓶頸。但是,分析 sar
命令提供的信息可能比較困難,所以要使用 kSar 工具。kSar 工具可以將 sar
命令的輸出繪制成基于時間周期的、易于理解的圖表。
sar
、sa1
、和 sa2
命令都是 sysstat 包的一部分。它是 Linux 包含的性能監(jiān)視工具集合。
鴻蒙官方戰(zhàn)略合作共建——HarmonyOS技術社區(qū)
sar
:顯示數據
sa1
和 sa2
:收集和保存數據用于以后分析。sa2
shell 腳本在 /var/log/sa
目錄中每日寫入一個報告。sa1
shell 腳本將每日的系統(tǒng)活動信息以二進制數據的形式寫入到文件中。
sadc —— 系統(tǒng)活動數據收集器。你可以通過修改 sa1
和 sa2
腳本去配置各種選項。它們位于以下的目錄:
/usr/lib64/sa/sa1
(64 位)或者 /usr/lib/sa/sa1
(32 位) —— 它調用 sadc
去記錄報告到 /var/log/sa/sadX
格式。
/usr/lib64/sa/sa2
(64 位)或者 /usr/lib/sa/sa2
(32 位) —— 它調用 sar
去記錄報告到 /var/log/sa/sarX
格式。
在一個基于 CentOS/RHEL 的系統(tǒng)上,輸入如下的 yum 命令 去安裝 sysstat:
# yum install sysstat
示例輸出如下:
Loaded plugins: downloadonly, fastestmirror, priorities, : protectbase, securityLoading mirror speeds from cached hostfile * addons: mirror.cs.vt.edu * base: mirror.ash.fastserv.com * epel: serverbeach2.fedoraproject.org * extras: mirror.cogentco.com * updates: centos.mirror.nac.net0 packages excluded due to repository protectionsSetting up Install ProcessResolving Dependencies--> Running transaction check---> Package sysstat.x86_64 0:7.0.2-3.el5 set to be updated--> Finished Dependency Resolution Dependencies Resolved ==================================================================== Package Arch Version Repository Size====================================================================Installing: sysstat x86_64 7.0.2-3.el5 base 173 k Transaction Summary====================================================================Install 1 Package(s)Update 0 Package(s)Remove 0 Package(s) Total download size: 173 kIs this ok [y/N]: yDownloading Packages:sysstat-7.0.2-3.el5.x86_64.rpm | 173 kB 00:00Running rpm_check_debugRunning Transaction TestFinished Transaction TestTransaction Test SucceededRunning Transaction Installing : sysstat 1/1 Installed: sysstat.x86_64 0:7.0.2-3.el5 Complete!
編輯 /etc/sysconfig/sysstat
文件去指定日志文件保存多少天(最長為一個月):
# vi /etc/sysconfig/sysstat
示例輸出如下 :
# keep log for 28 days# the default is 7HISTORY=28
保存并關閉這個文件。
默認的 cron 作業(yè)位于 /etc/cron.d/sysstat
:
# cat /etc/cron.d/sysstat
示例輸出如下:
# run system activity accounting tool every 10 minutes*/10 * * * * root /usr/lib64/sa/sa1 1 1# generate a daily summary of process accounting at 23:5353 23 * * * root /usr/lib64/sa/sa2 -A
使用一個文本編輯器去編輯 /etc/cron.d/sysstat
文件,比如使用 vim
命令,輸入如下:
# vi /etc/cron.d/sysstat
像下面的示例那樣更新這個文件,以記錄所有的硬盤統(tǒng)計數據(-d
選項強制記錄每個塊設備的統(tǒng)計數據,而 -I
選項強制記錄所有系統(tǒng)中斷的統(tǒng)計數據):
# run system activity accounting tool every 10 minutes*/10 * * * * root /usr/lib64/sa/sa1 -I -d 1 1# generate a daily summary of process accounting at 23:5353 23 * * * root /usr/lib64/sa/sa2 -A
在 CentOS/RHEL 7.x 系統(tǒng)上你需要傳遞 -S DISK
選項去收集塊設備的數據。傳遞 -S XALL
選項去采集如下所列的數據:
鴻蒙官方戰(zhàn)略合作共建——HarmonyOS技術社區(qū)
磁盤
分區(qū)
系統(tǒng)中斷
SNMP
IPv6
# Run system activity accounting tool every 10 minutes*/10 * * * * root /usr/lib64/sa/sa1 -S DISK 1 1# 0 * * * * root /usr/lib64/sa/sa1 600 6 Generate a daily summary of process accounting at 23:5353 23 * * * root /usr/lib64/sa/sa2 -A# Run system activity accounting tool every 10 minutes
保存并關閉這個文件。
輸入如下命令:
chkconfig sysstat onservice sysstat start
示例輸出如下:
Calling the system activity data collector (sadc):
對于 CentOS/RHEL 7.x,運行如下的命令:
# 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 Sat 2018-01-06 16:33:19 IST; 3s ago Process: 28297 ExecStart=/usr/lib64/sa/sa1 --boot (code=exited, status=0/SUCCESS) Main PID: 28297 (code=exited, status=0/SUCCESS) Jan 06 16:33:19 centos7-box systemd[1]: Starting Resets System Activity Logs...Jan 06 16:33:19 centos7-box systemd[1]: Started Resets System Activity Logs.
使用 sar
命令去顯示操作系統(tǒng)中選定的累積活動計數器輸出。在這個示例中,運行 sar
命令行,去實時獲得 CPU 使用率的報告:
# sar -u 3 10
示例輸出:
Linux 2.6.18-164.2.1.el5 (www-03.nixcraft.in) 12/14/2009 09:49:47 PM CPU %user %nice %system %iowait %steal %idle09:49:50 PM all 5.66 0.00 1.22 0.04 0.00 93.0809:49:53 PM all 12.29 0.00 1.93 0.04 0.00 85.7409:49:56 PM all 9.30 0.00 1.61 0.00 0.00 89.1009:49:59 PM all 10.86 0.00 1.51 0.04 0.00 87.5809:50:02 PM all 14.21 0.00 3.27 0.04 0.00 82.4709:50:05 PM all 13.98 0.00 4.04 0.04 0.00 81.9309:50:08 PM all 6.60 6.89 1.26 0.00 0.00 85.2509:50:11 PM all 7.25 0.00 1.55 0.04 0.00 91.1509:50:14 PM all 6.61 0.00 1.09 0.00 0.00 92.3109:50:17 PM all 5.71 0.00 0.96 0.00 0.00 93.33Average: all 9.24 0.69 1.84 0.03 0.00 88.20
其中:
3 表示間隔時間
10 表示次數
查看進程創(chuàng)建的統(tǒng)計數據,輸入:
# sar -c 3 10
查看 I/O 和傳輸率統(tǒng)計數據,輸入:
# sar -b 3 10
查看內存頁面統(tǒng)計數據,輸入:
# sar -B 3 10
查看塊設備統(tǒng)計數據,輸入:
# sar -d 3 10
查看所有中斷的統(tǒng)計數據,輸入:
# sar -I XALL 3 10
查看網絡設備特定的統(tǒng)計數據,輸入:
# sar -n DEV 3 10# sar -n EDEV 3 10
查看 CPU 特定的統(tǒng)計數據,輸入:
# sar -P ALL# Only 1st CPU stats# sar -P 1 3 10
查看隊列長度和平均負載的統(tǒng)計數據,輸入:
# sar -q 3 10
查看內存和交換空間的使用統(tǒng)計數據,輸入:
# sar -r 3 10# sar -R 3 10
查看 inode、文件、和其它內核表統(tǒng)計數據狀態(tài),輸入:
# sar -v 3 10
查看系統(tǒng)切換活動統(tǒng)計數據,輸入:
# sar -w 3 10
查看交換統(tǒng)計數據,輸入:
# sar -W 3 10
查看一個 PID 為 3256 的 Apache 進程,輸入:
# sar -x 3256 3 10
sar
和 sadf
提供了基于命令行界面的輸出。這種輸出可能會使新手用戶/系統(tǒng)管理員感到無從下手。因此,你需要使用 kSar,它是一個圖形化顯示你的 sar
數據的 Java 應用程序。它也允許你以 PDF/JPG/PNG/CSV 格式導出數據。你可以用三種方式去加載數據:本地文件、運行本地命令、以及通過 SSH 遠程運行的命令。kSar 可以處理下列操作系統(tǒng)的 sar
輸出:
鴻蒙官方戰(zhàn)略合作共建——HarmonyOS技術社區(qū)
Solaris 8, 9 和 10
Mac OS/X 10.4+
Linux (Systat Version >= 5.0.5)
AIX (4.3 & 5.3)
HPUX 11.00+
訪問 官方 網站去獲得***版本的源代碼。使用 wget 去下載源代碼,輸入:
$ wget https://github.com/vlsi/ksar/releases/download/v5.2.4-snapshot-652bf16/ksar-5.2.4-SNAPSHOT-all.jar
首先要確保你的機器上 JAVA jdk 已安裝并能夠正常工作。輸入下列命令去啟動 kSar:
$ java -jar ksar-5.2.4-SNAPSHOT-all.jar
kSar welcome screen
接下來你將看到 kSar 的主窗口,和有兩個菜單的面板。
kSar - the main window
左側有一個列表,是 kSar 根據數據已經解析出的可用圖表的列表。右側窗口將展示你選定的圖表。
首先,你需要從命名為 server1 的服務器上采集 sar
命令的統(tǒng)計數據。輸入如下的命令:
[ server1 ]# LC_ALL=C sar -A > /tmp/sar.data.txt
接下來,使用 scp
命令從本地桌面拷貝到遠程電腦上:
[ desktop ]$ scp user@server1.nixcraft.com:/tmp/sar.data.txt /tmp/
切換到 kSar 窗口,點擊 “Data” > “Load data from text file” > 從 /tmp/
中選擇 sar.data.txt
> 點擊 “Open” 按鈕。
現在,圖表類型樹已經出現在左側面板中并選定了一個圖形:
Linux kSar Processes for server1
Linux Disk I/O Stats Using kSar
Linux Memory paging and its utilization stats
通過移動你可以交互式縮放圖像的一部分。在要縮放的圖像的左上角點擊并按下鼠標,移動到要縮放區(qū)域的右下角,可以選定要縮放的區(qū)域。返回到未縮放狀態(tài),點擊并拖動鼠標到除了右下角外的任意位置,你也可以點擊并選擇 zoom 選項。
我強烈建議你去閱讀 sar
和 sadf
命令的 man 頁面:
$ man sar$ man sadf
使用 sar
命令和 kSar 工具,可以得到內存、CPU、以及其它子系統(tǒng)的詳細快照。例如,如果 CPU 使用率在一個很長的時間內持續(xù)高于 80%,有可能就是出現了一個 CPU 瓶頸。使用 sar -x ALL
你可以找到大量消耗 CPU 的進程。
mpstat 命令 的輸出(sysstat 包的一部分)也會幫你去了解 CPU 的使用率。但你可以使用 kSar 很容易地去分析這些信息。
對 CPU 執(zhí)行如下的調整:
鴻蒙官方戰(zhàn)略合作共建——HarmonyOS技術社區(qū)
確保沒有不需要的進程在后臺運行。關閉 Linux 上所有不需要的服務。
使用 cron 在一個非高峰時刻運行任務(比如,備份)。
使用 top 和 ps 命令 去找出所有非關鍵的后臺作業(yè)/服務。使用 renice 命令 去調整低優(yōu)先級作業(yè)。
使用 taskset 命令去設置進程使用的 CPU (卸載所使用的 CPU),即,綁定進程到不同的 CPU 上。例如,在 2# CPU 上運行 MySQL 數據庫,而在 3# CPU 上運行 Apache。
確保你的系統(tǒng)使用了***的驅動程序和固件。
如有可能在系統(tǒng)上增加額外的 CPU。
為單線程應用程序使用更快的 CPU(比如,Lighttpd web 服務器應用程序)。
為多線程應用程序使用多個 CPU(比如,MySQL 數據庫服務器應用程序)。
為一個 web 應用程序使用多個計算節(jié)點并設置一個 負載均衡器。
isag
命令圖形化顯示了以前運行 sar
命令時存儲在二進制文件中的系統(tǒng)活動數據。isag
命令引用 sar
并提取出它的數據來繪制圖形。與 kSar 相比,isag
的選項比較少。
以上是“怎么使用sar和kSar來發(fā)現Linux性能瓶頸”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注創(chuàng)新互聯行業(yè)資訊頻道!