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 のコマンド比較