◼︎ 概要
Linuxコマンド紹介シリーズ
- Linuxサーバー保守運用時にたまに使うコマンド sar,vmstat,netstat,iostat,top
- Linuxサーバー保守運用時にたまに使うコマンド pstack,strace,pstree,mpstat
- Linuxサーバー保守運用時にたまに使うコマンド perf,tcpdump,ngrep,lsof
障害調査、負荷調査などで使うコマンドをまとめます
◼︎ pstack
わかること
そのプログラム(プロセス)がその瞬間にどんな処理を実行しているのかがわかる
あくまでもスナップショットのため何度か実行して情報を表示するべき
プログラムが何かを待っている場合、何度pstackを実行しても同じコールスタックで待っているはず
一般にpstackは負荷が低いとされているのでパフォーマンスが劣化する可能性は低いツール
// 実行例 // apacheのプロセス番号を指定してみる $ sudo pstack 5751 #0 0x0000003134ceae5b in accept4 () from libc.so.6 // どんなOSの関数なのかわかる #1 0x00007f0eed38fc77 in apr_socket_accept () from libyapr.so.0 #2 0x000000000044bb0d in unixd_accept () #3 0x000000000044a8b3 in child_main () #4 0x000000000044ac14 in make_child () #5 0x000000000044af1e in ap_mpm_run () #6 0x0000000000423fe4 in main () accept4はソケットへの接続を受けるっぽい
◼︎ strace
どんなシステムコールを持っているのかOSの何の関数で時間を使っているのかがわかる
リアルタイムにモニタリングできる
//// 使い方例 // コマンドを調べる $ strace [command] // プロセスを調べる $ strace -p [pid] // 時刻を表示する // -t は秒単位で、-tt はマイクロ秒単位で表示 $ strace -tt command // 統計情報を表示する $ strace -c [command or -p pid]
◼︎ pstree
プロセスの親子関係をツリー表示する
treeコマンドみたいに表示ができ-pでプロセス番号も表示できる
// 実行例
// psコマンドで出力されるプロセスをtree形式で表示しているイメージ
$ pstree
init─┬─acpid
├─atd
├─crond
├─java───51*[{java}]
├─mcelog
├─6*[mingetty]
├─mysqld_safe───mysqld───19*[{mysqld}]
├─ntpd
...
└─apache
実際はもっとあるけど中略
◼︎ mpstat
mpstatとはCPUの使用状況を調べることができる
インストール
$ sudo yum install sysstat
使い方
// 1秒毎に3回取得する $ mpstat -P ALL 1 3 Linux XXX (hostname) 12/20/2015 _x86_64_ (2 CPU) 01:35:05 AM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %idle 01:35:06 AM all 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00 01:35:06 AM 0 0.00 0.00 0.00 0.00 0.00 0.00 1.00 0.00 99.00 01:35:06 AM 1 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00 01:35:06 AM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %idle 01:35:07 AM all 0.00 0.00 0.50 0.00 0.00 0.00 0.00 0.00 99.50 01:35:07 AM 0 0.99 0.00 0.00 0.00 0.00 0.00 0.00 0.00 99.01 01:35:07 AM 1 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00 01:35:07 AM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %idle 01:35:08 AM all 0.50 0.00 0.00 0.00 0.00 0.00 0.00 0.00 99.50 01:35:08 AM 0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00 01:35:08 AM 1 0.00 0.00 1.00 0.00 0.00 0.00 0.00 0.00 99.00 Average: CPU %usr %nice %sys %iowait %irq %soft %steal %guest %idle Average: all 0.17 0.00 0.17 0.00 0.00 0.00 0.00 0.00 99.67 Average: 0 0.33 0.00 0.00 0.00 0.00 0.00 0.33 0.00 99.33 Average: 1 0.00 0.00 0.33 0.00 0.00 0.00 0.00 0.00 99.67
各項目の見方
| 項目 | 説明 |
|---|---|
| CPU |
|
| %usr |
|
| %nice |
|
| %sys |
|
| %iowait |
|
| %irq |
|
| %soft |
|
| %steal |
|
| %quest |
|
| %idle |
|
プロセッサの確認方法
// プロセッサは2つあることになる // その他cpuinfoにはcpuについて情報が載っている $ cat /proc/cpuinfo | grep processor processor : 0 processor : 1
主なオプションについて
</table> ## ◼︎ 参考 * [strace コマンドの使い方をまとめてみた](http://blog.livedoor.jp/sonots/archives/18193659.html) * [【 pstree 】 プロセスの親子関係をツリー表示する](http://itpro.nikkeibp.co.jp/article/COLUMN/20071204/288730/?rt=nocnt) * [CPUをコアごとに確認する](http://qiita.com/shohhei1126/items/4b54290a3604f63f52c8) * [mpstat コマンドの読み方](https://blogs.oracle.com/yappri/entry/mpstat)| オプション | 説明 |
|---|---|
|
-P |
特定のCPUの指定 |
| -P ALL | 全てのCPUの指定 |
コメントを書く
コメント一覧