Apache Tomcat のサーブレット コンテナの起動を制御する server.xml には、ほぼすべての主要コンポーネントのデバッグ属性が含まれています。debug 属性は、指定した数値に応じて多かれ少なかれ詳細になります。0 が最も詳細ではなく、99 が最も詳細です。多数のユーザーにサービスを提供する場合、デバッグ レベルは Tomcat の速度にどのように影響しますか? ゼロは速く、99 は比較的遅いと思いますが、これは本当ですか。エラーがスローされていない場合、それは重要ですか?
2 に答える
広範なロギングにはかなりの時間がかかります。これが、置くことが非常に重要である理由です
if (log.isDebugEnabled())
log.debug(bla_bla_bla);
したがって、本番サーバーを冗長に設定すると、パフォーマンスに深刻な影響を与えると言えます。多数のユーザーにサービスを提供する必要があるとあなたが言っているので、それはあなたが話している実稼働サーバーだと思います。
ロギングは、エラーを発生させるだけでなく、何が起こっているかを追跡する役割も果たします。場合によっては、デバッガー内でコードを実行できず、ログ記録が唯一のオプションになります。
これが、ログ出力が非常に冗長になる理由です。そして、私は本当にそれを意味します。Catalina のログレベルを一度 TRACE に設定すると、数メガバイトのログファイルになってしまったことを覚えています。それは、サーバーがまったくヒットを受信する前のことです。それは巨大なパフォーマンスの豚でした。数秒で数えられる。
Tomcat 自体のログが必要ない場合は、そのコンポーネントで有効にしないでください。通常、Tomcat のログレベルをいじりたいのは、セットアップまたは Tomcat 自体にバグがあると思われる場合だけです。
独自のアプリケーションについては、プロファイラーまたはいくつかのストレス テストを使用してロギング コストを測定します。結果がどうであれ、本番環境でログレベルを高く設定してアプリケーションを実行しないことをお勧めします。私の現在のプロジェクトは、TRACE 設定で要求ごとに約 1 メガバイトをダンプします。INFOでは約 3 ~ 4 行しかダンプせず、WARNING では何もダンプしません (すべてがうまくいけば :-)。最も必要なロギングを超えることはお勧めしません。アプリは実際には、起動、シャットダウン、失敗を報告するだけで、最大でもリクエストごとに 1 行を報告する必要があります。