CentOS でサーバーが重いときの確認コマンド

サーバー設定

CentOS のサーバーが重い場合に調査するコマンドを3つ紹介します。
サーバーが重くなる原因は様々あるため、まずは原因を突き止める必要があります。

CPU・メモリ・ディスクなど、サーバーの状態を調べるためのコマンドを使用します。
今回は top free vmstat の見方について解説します。



top で CPU 使用率を確認

top は起動中のプロセス(プログラム)を確認できるコマンドです。
色々表示されますが、上部にある %Cpu が CPU の使用状況を示します。

top - 23:09:25 up 0 min,  0 users,  load average: 0.52, 0.58, 0.59
Tasks:   4 total,   1 running,   3 sleeping,   0 stopped,   0 zombie
%Cpu(s):  1.2 us,  4.8 sy,  0.0 ni, 93.5 id,  0.0 wa,  0.5 hi,  0.0 si,  0.0 st
KiB Mem:   8247156 total,  5149736 used,  3097420 free,    34032 buffers
KiB Swap: 10485756 total,   366156 used, 10119600 free.   188576 cached Mem

PID USER  PR  NI    VIRT   RES   SHR S  %CPU %MEM     TIME+ COMMAND
  1 root  20   0  128116  6664  4056 S   0.0  0.1  15:11.36 systemd
  2 root  20   0       0     0     0 S   0.0  0.0   0:06.44 kthreadd
  3 root  20   0       0     0     0 S   0.0  0.0   0:33.16 ksoftirqd/0

上部にはサーバー全体の情報、下部には起動プロセスの一覧が表示されます。
プロセスごとに、CPU 使用率やメモリ使用量を確認することが可能です。

 
以下のコマンドで並び替えができます。
調べたい内容に応じて、下記のキー(大文字の P、M、数字の 1)を入力しましょう。

  • P: CPU使用率の高い順
  • M: メモリ使用量の多い順
  • 1: CPUコアごとの使用率(画面上部に表示)

 
注意点として、top コマンド自体でもある程度の負荷が発生します。
サーバーのコマンド入力すら重いような場合は、top を使わないようにしましょう。

free でメモリ使用状況を確認

free はメモリの空き状況を確認できるコマンドです。
以下の例では、全体で 7800MB のメモリがあり、550MB ほどが使用中と読み取れます。

$ free -m
        total    used    free   shared   buff/cache   available
Mem:     7823     558    3103      386         4160        6502
Swap:    3275       0    3275

-m オプションで MB 単位の表示、 -g オプションで GB 単位の表示にできます。
数値が大きいと分かりづらいため、これらのオプションを活用しましょう。

 
多くの列が横に並んでいますが、よく見る項目だけをピックアップして解説します。

  • total: 総メモリ
  • used: 使用中のメモリ
  • free: 未使用のメモリ
  • available: 利用可能なメモリ

 
未使用メモリ以外にも、一時的に予約されているだけの領域があります。
buff/cache で示されている数値が該当し、この部分も利用可能なメモリに含まれます。

vmstat でサーバー全体の情報を確認

vmstat は、CPU やメモリに加えてディスク状況なども確認できるコマンドです。

$ vmstat
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 1  0      0 3178064  6244 4254244   0    0     0    52    0    1  0  0 99  0  0
  • procs : プロセスに関する情報
  • memory : メモリに関する情報
  • io : ディスクアクセスに関する情報
  • cpu : CPU使用率に関する情報です

 
io の中にある、bi bo がディスクの入出力を示しています。
この値が常に大きいようであれば、ディスクの読み書きが追いついていない可能性もあります。

 
また、vmstat コマンドの後ろに数字を付けると、定期的に実行することができます。
vmstat 1 とすれば、1秒おきに結果が出力されます。

性能試験を行なう際や、負荷を後から確認したい際に活用しましょう。

まとめ

サーバーが重い場合の確認コマンドを3つ紹介しました。

CPU が不足している場合、メモリが不足している場合、ディスクの読み書きが遅い場合、
サーバーによって原因はいろいろと考えられます。

まずはどの部分で改善が必要か見つけ出して、対応に当たりましょう。
原因が判明次第、プログラム修正やチューニング、サーバー性能強化を検討することとなります。

【関連記事】
CentOS で起動中のサービスを確認する
CentOS の時刻がずれる場合の修正方法
スケールアップとスケールアウトの違いとは
curl の便利なオプションを解説
Wi-Fi が遅いときのチェック項目
CentOS 6 と CentOS 7 のコマンド比較