システムのモニタ
モニタの基本方針
- システムを公開すれば,必ずいつかは性能が足りなくなる
ログメッセージ
- Apache Serverのエラー出力
- httpd.conf中でErrorLogで指定したファイル(デフォルト: APATCH_HOME/logs/error_log).
- mod_jservのエラー出力
- Apache JServ 1.1
- jserv.conf中でApJServLogFileで指定したファイル
- デフォルト: JSERV_HOME/logs/mod_jserv.log
- Tomcat 3.1
- tomcat.conf中でApJServLogFileで指定したファイル
- デフォルト: JSERV_HOME/logs/mod_jserv.log
- Servletコンテナのログ出力
- Apache JServ 1.1
- jserv.propertiesでlog.fileで指定したファイル
- Tomcat 3.1
- server.xml中でLoggerで指定したファイル.
- Servletからの標準出力
- Apache JServ 1.1…マニュアルスタートモードでは標準出力,オートスタートモードでは記録されない.
- Tomcat 3.1…標準出力
- Servletからの標準エラー出力
- Apache JServ 1.1…マニュアルスタートモードでは標準エラー出力,オートスタートモードではhttpd.confのErrorLogで指定したファイル(デフォルトはAPATCH_HOME/logs/error_log).
- Tomcat 3.1…標準エラー出力 (ファイルにリダイレクトしておくとよい)
- javax.servlet.ServletContext#log()
- Apache JServ 1.1…jserv.propertiesのlog.fileで指定したファイル (デフォルトはJSERV_HOME/logs/jserv.log).
- Tomcat 3.1…server.xmlのLogger要素で"servlet_log"という名前で指定されたファイル (デフォルトはTOMCAT_HOME/logs/servlet.log).
スレッド
- デッドロックしているスレッドが存在しないか?
- タイミング依存で,デバッガでは発生しない可能性がある.
- Java 2 SDK for Solarisでは,SIGQUITでJava VMの状態のダンプが可能
- JavaレベルとOSレベルのスレッド数が適切か?
- Javaレベルのスレッド数に比べて,OSレベルのスレッド数が異常に増える問題を持つJava VMが存在する.
メモリ
- 頻繁に使用されるServletシステムでは,メモリは単調増加する傾向にある
- プロセスサイズとヒープを監視し,単調増加の原因を見極める
- メモリーリーク
- リファレンスを持つスレッドのデッドロック
- コマンド
GC
- GCは発生して当たり前である.
- システムのロードアベレージが高い場合には,GCを監視する
- -verbosegcオプション
スワップ
- 基本的にスワップが発生しないようにシステムを管理する.
- ヒープが拡張された時だけ問題が発生する場合もあることに注意する.
コネクション数
CPU使用率
- Servletシステムは,基本的にI/O待ちが多い傾向にある.
- 異常に高い場合
- 低い場合
- 並列性を阻害するコーディングがないかをチェックする.
アクセス状況
- プログラム(不完全なロボットなど)による異常アクセスはないか?
- システムの穴を探ろうとしている不法アクセスはないか?