この記事は公開から1年以上が経過しています。内容が古い場合があるのでご注意下さい。

メモリ不足やCPU使用率の上昇など、サーバのリソース不足が発生した時に、dstatで原因プロセスを確認できることがあります。
今回は、小ネタですが、メモリやCPU、ディスクI/Oなどの確認方法をメモとして記録しておきます。

メモリの使用状況を確認する

ページングやSWAP、仮想メモリなど、一番メモリを使っているプロセスを確認します。

下記の例では、php-fpmがメモリを一番消費していました。

$ dstat -t -gs --mem --vm --ipc --top-mem

----system---- ---paging-- ----swap--- ------memory-usage----- -----virtual-memory---- --sysv-ipc- --most-expensive-
  date/time   |  in   out | used  free| used  buff  cach  free|majpf minpf alloc  free|msg sem shm|  memory process
16-02 17:50:33|   0     0 | 119M  858M| 322M 8336k 74.4M 84.3M|   2    10     0    12 |  0   2   0|php-fpm: poo29.0M
16-02 17:50:34|   0     0 | 119M  858M| 322M 8336k 74.4M 84.1M|   0     0     0    12 |  0   2   0|php-fpm: poo29.0M
16-02 17:50:35|   0     0 | 119M  858M| 322M 8336k 74.4M 84.1M|   0     0     0    11 |  0   2   0|php-fpm: poo29.0M

この結果を元に、php-fpmを再起動すると、メモリ不足が解消しました。
cloudwatch20160222

ディスクI/Oを確認する

I/Oを発生させているプロセスを確認します。
下記の例では、ddコマンドによるI/Oが発生していることが分かります。

$ dstat -tdng --file --lock --top-io --top-bio

----system---- -dsk/total- -net/total- ---paging-- --filesystem- ---file-locks-- ----most-expensive---- ----most-expensive----
  date/time   | read  writ| recv  send|  in   out |files  inodes|pos lck rea wri|     i/o process      |  block i/o process
22-02 13:47:47|4008B 5491B|   0     0 | 315B  470B|  800   6913 |3.0 3.0   0 6.0|crond      6312B   14B|init       1056B  686B
22-02 13:47:48|   0     0 | 132B 1248B|   0     0 |  800   7001 |3.0 3.0   0 6.0|sshd: root@1142B 1140B|
22-02 13:47:51| 104k   12M| 212B  672B|   0     0 |  800   7002 |3.0 3.0   0 6.0|dd           87M   86M|dd           52k   91M
22-02 13:47:52|8192B  235M|  80B  506B|   0     0 |  800   7007 |3.0 3.0   0 6.0|dd          118M  118M|dd            0   113M

CPU使用率を確認する

CPUの負荷状況を確認します。
先ほどと同じ状況下では、ddコマンドのCPU使用率が高いことが分かります。

$ dstat -taf --top-cpu

  date/time   |usr sys idl wai hiq siq| read  writ| recv  send|  in   out | int   csw |  cpu process
22-02 13:50:11|  0   0 100   0   0   0|2013B 4008B|   0     0 | 315B  470B|  19    41 |mysqld       0.0
22-02 13:50:16|  1   0  99   0   0   0|   0    32k|  40B  410B|   0     0 |  27    55 |
22-02 13:50:17|  0  17  20  61   2   0|  24k  105M| 264B  708B|   0     0 |2726   372 |dd            15
22-02 13:50:18|  0   4   0  96   0   0|   0    61M|  40B  426B|   0     0 |1525   238 |dd           3.0

dstatは他にも色んなことが調べられますが、この3つだけでも結構便利です。

関連記事:

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です