インソースマーケティングデザイン
2012.06.15 システム
トラブルシューティング時におけるtopコマンドの使い方
今回はLinuxサーバーでトラブルが発生した際のtopコマンドの使い方を紹介したいと思います。
普段はSSHクライアントからタイムアウトしない為に打つ位しか用のないtopコマンドですが、サーバーの状態を把握したい時や、トラブル発生時に少しでも情報を集めたい時にはとても有用なツールとして活躍してくれます。
↓topコマンド実行結果例
top – 10:02:02 up 236 days, 14:31, 0 users, load average: 0.01, 0.02, 0.00 ←①
Tasks: 101 total, 1 running, 99 sleeping, 0 stopped, 1 zombie
Cpu(s): 0.5%us, 0.1%sy, 0.0%ni, 99.3%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st ←②
Mem: 4050928k total, 3376860k used, 674068k free, 416792k buffers
Swap: 2048276k total, 26252k used, 2022024k free, 1932948k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND ←③
(~省略~)
21121 root 18 0 315m 13m 7568 S 0.0 0.3 0:00.10 httpd
21124 apache 15 0 385m 70m 5000 S 0.0 1.8 0:27.28 httpd
21125 apache 15 0 384m 66m 4244 S 0.0 1.7 0:19.87 httpd
21126 apache 15 0 383m 68m 4876 S 0.0 1.7 0:18.73 httpd
21127 apache 15 0 382m 68m 4584 S 0.0 1.7 0:20.59 httpd
21128 apache 15 0 385m 71m 4568 S 0.0 1.8 0:22.46 httpd
21129 apache 16 0 382m 65m 4616 S 0.0 1.7 0:19.74 httpd
21130 apache 15 0 380m 64m 4272 S 0.0 1.6 0:18.56 httpd
21131 apache 15 0 380m 66m 4600 S 0.0 1.7 0:23.47 httpd
21475 apache 15 0 382m 68m 4808 S 0.0 1.7 0:15.33 httpd
21521 apache 16 0 380m 66m 4436 S 0.0 1.7 0:17.05 httpd
①load average
CPUの処理待ちとなっているプロセス数平均を表しています。
左から順に1分、5分、15分毎の平均値となっており、仮に3番目の「15分毎の平均値」が1以上の場合はサーバーの処理が間に合わない「何か」が起きていると見てよいでしょう。
②Cpu
CPUのステータスを表しています。
導入したプログラムが予期しない動作をし、CPU使用率が100%に張り付いてしまった場合は、us(ユーザープロセスの使用率)とsy(システムプロセスの使用率)を確認しましょう。単に重い処理を実行してCPU使用率が100%になった場合とプロセスが暴走した場合ではusとsyの割合が異なるケースがあります。
sy:システムプロセスの使用率
id:アイドル率
③プロセス情報
現在実行されているプロセスの状態を表しています。
着目するポイントとして、一つ目は「同一プロセスの実行数」。二つ目は「各プロセスのCPUとメモリの使用状況」を確認します。各プロセスのリアルタイムの動きを確認することで、推測の幅を広げ、問題解決の糸口を探していきます。
VIRT :プロセスが使用している仮想メモリ
RES :プロセスが使用しているスワップされていない物理メモリ
%CPU :CPU使用率
%MEM :メモリ使用率
TIME+ :プロセスの実行時間(秒)
COMMAND :コマンド名
以上が私のtopコマンドの使い方です。稼働中のサーバーに手を加える事が難しい場合や、ログが何も出力されない状況で藁にもすがる思いの方にはtopコマンドで少しでも情報を集めると良いです。