sar ツールを使用してシステム パフォーマンスのボトルネックを検出する

WBOY
リリース: 2024-06-03 11:03:54
オリジナル
474 人が閲覧しました

sar コマンドは、UNIX/Linux システムのアクティビティ情報を収集、レポート、または保存するために使用されます。選択したカウンターをオペレーティング システムの /var/log/sa/sadd ファイルに保存します。収集されたデータから、サーバーに関する多くの情報を取得できます:

  1. CPU使用率
  2. メモリページと使用状況
  3. ネットワーク I/O および転送統計
  4. プロセス作成アクティビティ
  5. すべてのデバイスアクティビティをブロックします
  6. 1秒あたりの中断数など

sar コマンドの出力は、サーバーのボトルネックを特定するために使用できます。ただし、sar コマンドによって提供される情報を分析するのは難しい場合があるため、kSar ツールを使用してください。 kSar ツールは、sar コマンドの出力を期間に基づいてわかりやすいグラフにプロットできます。

sysstatパッケージ

sarsa1、および sa2 コマンドはすべて sysstat パッケージの一部です。これは、Linux に含まれるパフォーマンス監視ツールのコレクションです。

  1. sar: データを表示します
  2. sa1 および sa2: 後の分析のためにデータを収集して保存します。 sa2 シェル スクリプトは、日次レポートを /var/log/sa ディレクトリに書き込みます。 sa1 シェル スクリプトは、毎日のシステム アクティビティ情報をバイナリ データの形式でファイルに書き込みます。
  3. sadc - システムアクティビティデータコレクター。 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 形式。
私のシステムに sar をインストールするにはどうすればよいですか?

在一个基于 CentOS/RHEL 的系统上,输入如下的 yum 命令[1] 去安装 sysstat:

# yum install 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
0 packages excluded due to repository protections
Setting up Install Process
Resolving 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 k
Is this ok [y/N]: y
Downloading Packages:
sysstat-7.0.2-3.el5.x86_64.rpm               | 173 kB     00:00
Running rpm_check_debug
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
  Installing     : sysstat                                      1/1

Installed:
  sysstat.x86_64 0:7.0.2-3.el5

Complete!
ログイン後にコピー
为 sysstat 配置文件

编辑 /etc/sysconfig/sysstat 文件去指定日志文件保存多少天(最长为一个月):

# vi /etc/sysconfig/sysstat
ログイン後にコピー

示例输出如下 :

# keep log for 28 days
# the default is 7
HISTORY=28
ログイン後にコピー

保存并关闭这个文件。

找到 sar 默认的 cron 作业

默认的 cron 作业位于[2] /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:53
53 23 * * * root /usr/lib64/sa/sa2 -A
ログイン後にコピー
告诉 sadc 去报告磁盘的统计数据

使用一个文本编辑器去编辑 /etc/cron.d/sysstat 文件,比如使用 vim 命令,输入如下:

# vi /etc/cron.d/sysstat
ログイン後にコピー

像下面的示例那样更新这个文件,以记录所有的硬盘统计数据(-d 选项强制记录每个块设备的统计数据,而 -I 选项强制记录所有系统中断的统计数据):

# 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:53
53 23 * * * root /usr/lib64/sa/sa2 -A 
ログイン後にコピー

在 CentOS/RHEL 7.x 系统上你需要传递 -S DISK 选项去收集块设备的数据。传递 -S XALL 选项去采集如下所列的数据:

  1. 磁盘
  2. 分区
  3. 系统中断
  4. SNMP
  5. 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:53
53 23 * * * root /usr/lib64/sa/sa2 -A
# Run system activity accounting tool every 10 minutes
ログイン後にコピー

保存并关闭这个文件。

打开 CentOS/RHEL 版本 5.x/6.x 的服务

输入如下命令:

chkconfig sysstat on
service 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?如何查看统计数据?

使用 sar 命令去显示操作系统中选定的累积活动计数器输出。在这个示例中,运行 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 %idle
09:49:50 PM all 5.66 0.00 1.22 0.04 0.00 93.08
09:49:53 PM all 12.29 0.00 1.93 0.04 0.00 85.74
09:49:56 PM all 9.30 0.00 1.61 0.00 0.00 89.10
09:49:59 PM all 10.86 0.00 1.51 0.04 0.00 87.58
09:50:02 PM all 14.21 0.00 3.27 0.04 0.00 82.47
09:50:05 PM all 13.98 0.00 4.04 0.04 0.00 81.93
09:50:08 PM all 6.60 6.89 1.26 0.00 0.00 85.25
09:50:11 PM all 7.25 0.00 1.55 0.04 0.00 91.15
09:50:14 PM all 6.61 0.00 1.09 0.00 0.00 92.31
09:50:17 PM all 5.71 0.00 0.96 0.00 0.00 93.33
Average: all 9.24 0.69 1.84 0.03 0.00 88.20
ログイン後にコピー

其中:

  • 3 表示间隔时间
  • 10 表示次数

查看进程创建的统计数据,输入:

# sar -c 3 10
ログイン後にコピー

查看 I/O 和传输率统计数据,输入:

# sar -b 3 10
ログイン後にコピー

查看内存页面统计数据,输入:

# sar -B 3 10
ログイン後にコピー

查看块设备统计数据,输入:

# sar -d 3 10
ログイン後にコピー

查看所有中断的统计数据,输入:

# sar -I XALL 3 10
ログイン後にコピー

查看网络设备特定的统计数据,输入:

# sar -n DEV 3 10
# sar -n EDEV 3 10
ログイン後にコピー

查看 CPU 特定的统计数据,输入:

# sar -P ALL
# Only 1st CPU stats
# sar -P 1 3 10 
ログイン後にコピー

查看队列长度和平均负载的统计数据,输入:

# sar -q 3 10
ログイン後にコピー

查看内存和交换空间的使用统计数据,输入:

# sar -r 3 10
# sar -R 3 10
ログイン後にコピー

查看 inode、文件、和其它内核表统计数据状态,输入:

# sar -v 3 10
ログイン後にコピー

查看系统切换活动统计数据,输入:

# sar -w 3 10
ログイン後にコピー

查看交换统计数据,输入:

# sar -W 3 10
ログイン後にコピー

查看一个 PID 为 3256 的 Apache 进程,输入:

# sar -x 3256 3 10
ログイン後にコピー
kSar 介绍

sarsadf 提供了基于命令行界面的输出。这种输出可能会使新手用户/系统管理员感到无从下手。因此,你需要使用 kSar,它是一个图形化显示你的 sar 数据的 Java 应用程序。它也允许你以 PDF/JPG/PNG/CSV 格式导出数据。你可以用三种方式去加载数据:本地文件、运行本地命令、以及通过 SSH 远程运行的命令。kSar 可以处理下列操作系统的 sar 输出:

  1. Solaris 8, 9 和 10
  2. Mac OS/X 10.4+
  3. Linux (Systat Version >= 5.0.5)
  4. AIX (4.3 & 5.3)
  5. HPUX 11.00+
下载和安装 kSar

访问 官方[3] 网站去获得最新版本的源代码。使用 wget[4] 去下载源代码,输入:

$ wget https://github.com/vlsi/ksar/releases/download/v5.2.4-snapshot-652bf16/ksar-5.2.4-SNAPSHOT-all.jar
ログイン後にコピー
如何运行 kSar?

首先要确保你的机器上 JAVA jdk[5] 已安装并能够正常工作。输入下列命令去启动 kSar:

$ java -jar ksar-5.2.4-SNAPSHOT-all.jar
ログイン後にコピー

用 sar 工具检测系统性能瓶颈

kSar welcome screen

接下来你将看到 kSar 的主窗口,和有两个菜单的面板。

用 sar 工具检测系统性能瓶颈

kSar - the main window

左侧有一个列表,是 kSar 根据数据已经解析出的可用图表的列表。右侧窗口将展示你选定的图表。

如何使用 kSar 去生成 sar 图表?

首先,你需要从命名为 server1 的服务器上采集 sar 命令的统计数据。输入如下的命令:

[ 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” 按钮。

现在,图表类型树已经出现在左侧面板中并选定了一个图形:

用 sar 工具检测系统性能瓶颈

Linux kSar Processes for server1

用 sar 工具检测系统性能瓶颈

Linux Disk I/O Stats Using kSar

用 sar 工具检测系统性能瓶颈

Linux Memory paging and its utilization stats

放大和缩小
通过移动你可以交互式缩放图像的一部分。在要缩放的图像的左上角点击并按下鼠标,移动到要缩放区域的右下角,可以选定要缩放的区域。返回到未缩放状态,点击并拖动鼠标到除了右下角外的任意位置,你也可以点击并选择 zoom 选项。
了解 kSar 图像和 sar 数据
我强烈建议你去阅读 sarsadf 命令的 man 页面:

$ man sar
$ man sadf
ログイン後にコピー
案例学习:识别 Linux 服务器的 CPU 瓶颈

使用 sar 命令和 kSar 工具,可以得到内存、CPU、以及其它子系统的详细快照。例如,如果 CPU 使用率在一个很长的时间内持续高于 80%,有可能就是出现了一个 CPU 瓶颈。使用 sar -x ALL 你可以找到大量消耗 CPU 的进程。

mpstat 命令[6] 的输出(sysstat 包的一部分)也会帮你去了解 CPU 的使用率。但你可以使用 kSar 很容易地去分析这些信息。

找出 CPU 瓶颈后 …

CPU に対して次の調整を実行します:

  1. バックグラウンドで実行されている不要なプロセスがないことを確認してください。 Linux[7] で不要なサービスをすべてオフにします。
  2. cron[8] を使用して、オフピーク時にタスク (バックアップなど) を実行します。
  3. top および ps コマンド[9] を使用して、重要ではないバックグラウンド ジョブ/サービスをすべて検索します。 renice コマンド[10] を使用して、優先度の低いジョブを調整します。
  4. taskset コマンドを使用して、プロセス [11] によって使用される CPU を設定します (使用される CPU をオフロードします)。つまり、プロセスを別の CPU にバインドします。たとえば、MySQL データベースを CPU #2 で実行し、Apache を CPU #3 で実行します。
  5. システムが最新のドライバーとファームウェアを使用していることを確認してください。
  6. 可能であれば、システムに CPU を追加します。
  7. シングルスレッドアプリケーション (Lighttpd Web サーバーアプリケーションなど) には、より高速な CPU を使用します。
  8. マルチスレッドアプリケーション (MySQL データベースサーバーアプリケーションなど) には複数の CPU を使用します。
  9. 複数のコンピューティング ノードを使用し、Web アプリケーションのロード バランサーをセットアップします[12]
isag - インタラクティブなシステムアクティビティレコーダー (代替ツール)

isag コマンドは、sar コマンドの以前の実行からバイナリ ファイルに保存されたシステム アクティビティ データをグラフィカルに表示します。 isag コマンドは sar を参照し、そのデータを抽出してグラフをプロットします。 kSar と比較して、isag には選択肢が少ないです。

用 sar 工具检测系统性能瓶颈

図06: isag CPU使用率グラフ


以上がsar ツールを使用してシステム パフォーマンスのボトルネックを検出するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:linuxprobe.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート