ab(Apache Bench) コマンドなどを実行する場合など、HTTP サーバのパフォーマンスの分析を簡易的にしたい場合に、
topなどで監視するのもいいのですが、Apacheが現在何プロセス、何本のコネクションか定期的に監視できると便利です。
今回は毎秒Apacheのプロセス数とHTTP/HTTPS接続本数を調べて結果を出力し続けるというコードを書いてみました。
Linux(CentOS), sh(bash, zsh),Apacheで動作確認しています。
apache_monitor.sh:
#!/bin/sh export _APACHE_BIN=httpd while true; do echo -n $(date +'%Y-%m-%d %H:%M:%S'); _proc=$(ps ax | grep ht[t]pd | wc -l); _con=$((netstat -an 2>/dev/null)| sed -e '/ESTABLISHED/p' -ed | sed -e '/:80/p' -e '/:443/p' -ed|wc -l); echo " procs:$_proc conns:$_con"; sleep 1; done
実行結果はこのようになります。
##procs がプロセス数, conns がHTTP/HTTPS接続本数 $ apache_monitor.sh 2006-03-13 04:41:00 procs:223 conns:2 2006-03-13 04:41:01 procs:226 conns:40 2006-03-13 04:41:02 procs:253 conns:103 2006-03-13 04:41:03 procs:397 conns:128 2006-03-13 04:41:04 procs:398 conns:138 2006-03-13 04:41:05 procs:398 conns:207
実行している間、5秒おきに結果を出し続けます。
終了したい場合は、Ctrl-C を押せば終了します。