
ここでは、サーバーの負荷状況を確認する際に、
- どういった点に着目すると良いか
- SSH接続でどういったコマンドが役立つか
について見ていきます。
エックスサーバーでSSH接続する手順は、以下のページをご確認ください。
目次
着目すべき点
ロードアベレージ
ロードアベレージとは、「待たされたタスク数/単位時間」の数値で、この数が大きければ大きいほど負荷が高いと判断できます。
CPU使用率
CPU使用率が常に100%というのは明らかにスペックオーバーの処理を行おうとしている異常事態です。
瞬間的に100%になっても、いきなり全ての処理が滞るということはありませんが、それが頻繁に起こるということは、サーバーの処理能力に対して、行わなければならないプロセスが追いつかなくなってきているサインです。
メモリ使用率
メモリの使用率にも着目する必要があります。
行う処理に対してメモリの量が足りていないと、
処理の際にデータの入出力が多く発生し、結果的にCPUを食いつぶすことになります。
よく使うコマンド
「top」コマンド
topコマンドを使うと、システム全体の負荷やプロセス, CPU, メモリ, スワップの統計情報を見ることができます。
ヘッダーは以下の通りです。
- PID:プロセスID
- PR:優先度
- NI:相対優先度(負=優先度高 > 正=優先度低)
- VIRT:仮想メモリ
- RES:物理メモリ
- SHR:共有メモリ
- S:状態(D: 割り込み不能、R: 実行中、S: スリープ状態、T: 停止中、Z: ゾンビプロセス)
- %CPU:CPU使用率
- %MEM:メモリ使用率
- TIME+:実行時間
- COMMAND:コマンド
ユーザーごとに絞り込んで表示することもできます。
topでプロセスを表示しつつ、「u」を入力すると、「Which user (blank for all): 」と聞かれます。
ここに絞り込み表示を行いたいユーザー名を入力します。
「b」を入力すると、実行状態(S=R)のもののみ強調表示されます。
「h」を入力すると、コマンドヘルプが表示されます。
「q」を入力すると、topコマンドを終了します。
「uptime」コマンド
ロードアベレージを見る際にシンプルで見やすいです。
左から順に、現在時刻、ログイン時間、ログインユーザー数、ロードアベレージ。
「vmstat」コマンド
procs
r:「実行キュー」に入っているプロセスの数
b:「ブロック」されているプロセスの数
rの数が0だと異常です。
memory
- swpd:使用しているスワップ領域の量
- free:空いているメモリ量
- buff:主にバッファ領域として使用しているメモリ量
- cache:ディスクアクセス時にキャッシュデータを保存しているメモリの量
swap
- si:スワップ領域から読み込んでメモリに展開したデータの量(スワップ・イン)
- so:メモリからスワップ領域に書き込んだデータの量(スワップ・アウト)
基本的にはsiもsoも0がデフォルトです。
io
- bi:ブロックデバイス(主にディスク等)からの読み取り量
- bo:ブロックデバイス(同上)への書き込み量
system
- in:割り込み処理の回数
- cs:コンテクストスイッチの回数
cpu
- sy:カーネルコード(OS自身、またLinuxシステムコール等を呼び出された等)の処理のために費やした時間の割合
- us:一般のプログラムが動いていた時間の割合
- wa:データの入出力処理を試みたものの、結果的にデータを待っていた時間の割合
- id:アイドル時間の割合