他の会社の事はよくわからないのですが、自分が働いている会社ではよく監視をします。
パソコンの前に張りついて、有事の際に対応出来るように。。
会社的にはMRTG(http://www.mrtg.jp/doc/)でイロイロ見れるようになっていますが、
他にもチョコチョココンソール叩いて確認とかしてて。監視の時何してんですか?
とか聞かれて毎回説明するのもアレなので使ってるLinuxのコマンドを記載しておきやす。
#Solarisとか試してないですが、ほとんど使えると思います。昔prstatとか使ってたなぁ。
——————————-
■ top
——————————-
Tasks: 254 total, 1 running, 253 sleeping, 0 stopped, 0 zombie Cpu(s): 2.8%us, 2.9%sy, 1.0%ni, 91.9%id, 1.5%wa, 0.0%hi, 0.0%si, 0.0%st Mem: 2050468k total, 1534072k used, 516396k free, 311684k buffers Swap: 3229028k total, 0k used, 3229028k free, 502612k cached PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 992 root 20 0 89240 36m 11m S 8 1.8 26:41.94 /usr/bin/X :0 -nr -verbose -auth /var/run/gdm/auth-for-gdm-QK7CO0/database -nolisten tcp vt7 1727 eshinoha 20 0 163m 57m 13m S 3 2.9 4:05.84 gnome-terminal 1810 eshinoha 20 0 516m 202m 32m S 3 10.1 31:13.08 /usr/lib/firefox-3.6.13/firefox-bin
↑こんなヤツ。
実行中に c で、COMMANDがドヤっと出てくるので実行時の引数とかで判別出来るように
なってたりすると便利です。
自分はスレッドをよく使うJavaなプロジェクトに携わることが多いので、
コマンドたたいてから H(Shift+h) するとスレッドごとのが出てきて、それも便利です。
——————————-
■ ps
——————————-
$ ps -ef | grep apache root 1453 1 0 07:00 ? 00:00:01 /usr/sbin/apache2 -k start www-data 1463 1453 0 07:00 ? 00:00:00 /usr/sbin/apache2 -k start www-data 1464 1453 0 07:00 ? 00:00:00 /usr/sbin/apache2 -k start www-data 1465 1453 0 07:00 ? 00:00:00 /usr/sbin/apache2 -k start www-data 1466 1453 0 07:00 ? 00:00:00 /usr/sbin/apache2 -k start www-data 1468 1453 0 07:00 ? 00:00:00 /usr/sbin/apache2 -k start 1000 5759 5604 0 20:41 pts/82 00:00:00 grep --color=auto apache
上記はapacheのプロセスどうなってるだろ~?とかって時に使います。
自分はJavaでJVMに渡した引数とか大丈夫かな?とか見たりします。
また、上述したtopコマンドで気になったら ps -ef | grep プロセス番号 とか。
——————————-
■ vmstat
——————————-
$ vmstat 10 procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu---- r b swpd free buff cache si so bi bo in cs us sy id wa 0 0 43560 679636 81416 999320 0 0 0 15 0 0 1 0 99 0 0 0 43560 675396 81428 999540 0 0 0 116 830 3431 3 0 97 0 0 0 43560 675024 81444 999792 0 0 0 114 776 3357 3 0 97 0
情報を取得する周期を引数に与えてあげます。
swapしてるかどうかが重要で、siとかsoとかバンバン出まくってきたら要注意です。。
最初の1発目は参考値的に。2行目から見る感じで。
——————————-
■ free
——————————-
$ free total used free shared buffers cached Mem: 4059000 3412644 646356 0 81708 1008672 -/+ buffers/cache: 2322264 1736736 Swap: 4192944 43560 4149384
もうちょっとサクっとみたいなって時は、コレとか便利です。
-kでキロバイト、-mでメガバイト、-gでギガバイト単位で出力できます。
——————————-
■ pidstat
——————————-
$ pidstat -r -p 30782 -p 31170 -p 30841 -p 31207 Linux 2.6.26-2-amd64 (hogehoge) 06/01/2011 _x86_64_ 08:33:02 PM PID minflt/s majflt/s VSZ RSS %MEM Command 08:33:02 PM 30782 0.00 0.00 848112 518316 12.77 java 08:33:02 PM 31170 0.00 0.00 850448 566556 13.96 java 08:33:02 PM 30841 0.00 0.00 887516 558492 13.76 java 08:33:02 PM 31207 0.00 0.00 858816 580272 14.30 java
該当のプロセスがどんな風にメモリを使ってるのかトレースするのに便利です。
なぜか数学者にはワイン好きが多いな人に教えてもらいました。
——————————-
■ jstat
——————————-
$ /usr/local/jdk/bin/jstat -gc 30782 3000 S0C S1C S0U S1U EC EU OC OU PC PU YGC YGCT FGC FGCT GCT 3008.0 3072.0 2160.0 0.0 168576.0 139478.2 349568.0 198787.8 33728.0 33696.5 288 1.510 0 0.000 1.510 3008.0 3072.0 2160.0 0.0 168576.0 164795.2 349568.0 198787.8 33728.0 33696.5 288 1.510 0 0.000 1.510 2944.0 3072.0 0.0 1664.0 168576.0 14006.6 349568.0 199052.2 33728.0 33696.5 289 1.519 0 0.000 1.519
これはJavaのコマンドなのですが、jstat -gc の後に、プロセス番号と取得する周期(ミリ秒)で
左から右にいくにつれて、若いGCから古いGCがトレースできます。
FGCがやけに短い期間にバンバン実施されてしまっていたら要注意です。
——————————-
■ jmap
——————————-
$ /usr/local/jdk/bin/jmap -histo 30782 | more num #instances #bytes class name ---------------------------------------------- 1: 458035 72948264 [C 2: 32160 35404808 [B 3: 418982 20111136 java.util.concurrent.locks.ReentrantLock$NonfairSync 4: 418960 20110080 java.util.concurrent.ConcurrentHashMap$Segment 5: 407461 16298440 java.lang.String 6: 418981 13516864 [Ljava.util.concurrent.ConcurrentHashMap$HashEntry; 7: 134497 13506952 [Ljava.lang.Object;
こちらもJavaのコマンドになります。jmap -histo プロセス番号で、
どんなクラスがどんだけ使われてるか?というのが取得できます。
ただし、素で叩くとドヤっと出すぎてしまい、見たいのは上位だけって感じだと思うので、
パイプでmoreしてやって、必要なのだけ見る感じでイイのかなと思います。
コレ系の作業は熟練の職人みたいな方達がいらっしゃると思うので、
そういう人の隣で目で盗むみたいな事とかやってみたいなぁw
技術評論社
売り上げランキング: 51061
コメント