2008-09-19 9 views
4

Apache Tomcatのサーブレットコンテナの起動を制御するserver.xmlには、ほぼすべての主要コンポーネントのデバッグ属性が含まれています。デバッグ属性は、指定した番号に応じて多かれ少なかれ冗長になります。最小値は0、最も冗長値は99です。多数のユーザーにサービスを提供するとき、デバッグレベルはTomcatの速度にどのように影響しますか?私はゼロが速く、99が比較的遅いと考えますが、これは本当です。エラーがスローされていない場合は重要ですか?Tomcat server.xmlのデバッグレベル(0〜99)はどのように速度に影響しますか?

答えて

2

大量のログにはかなりの時間がかかります。これが重要な理由です。

if (log.isDebugEnabled()) 
    log.debug(bla_bla_bla); 

プロダクションサーバを冗長に設定すると、パフォーマンスに重大な影響を与えることになります。私はあなたが大量のユーザーにサービスを提供しなければならないと言って以来、あなたが話しているプロダクションサーバーだと思います。

+3

さて、率直に言って、 isDebugEnabled()が必要なのは、ロギングデータが非常に重いか構築が難しいかどうかをチェックするだけです。ロガーのdebug()またはwarn()、あるいは、それらが適切かどうかをチェックし、あまりにもオーバーヘッドなしに即座に終了するために、通常は効率的に実装されるメソッドです。 –

2

ロギングは、エラーの原因であるだけでなく、発生していることの追跡にも役立ちます。場合によっては、デバッガ内でコードを実行することはできません。ロギングは唯一のオプションです。

これは、ログ出力が非常に冗長になる可能性があるためです。そして私は本当にの意味を意味します。私はカタリナのログレベルをTRACEに設定したことを覚えていて、数メガバイトのログファイルで終わった。それはの前にあって、サーバはヒットをまったく受け取りませんでした。それは巨大なパフォーマンスの豚でした。数秒でカウント可能。

Tomcat自体のログを必要としない場合は、いずれのコンポーネントでもログオンしないでください。設定やTomcat自体にバグがあると思われる場合は、通常はTomcatのログレベルを調整するだけです。

プロファイラを使用してロギングコストを測定するか、ストレステストを行うだけで、ロギングコストを測定できます。結果が何であれ、プロダクション環境で高いログレベル設定のアプリケーションを実行することをお勧めします。私の現在のプロジェクトでは、の要求でのTRACE設定で1メガバイト、INFOの場合は3〜4行しかなく、WARNINGでは何も書かれていません。私は最も必要なロギング以上を推奨しません。あなたのアプリは実際には、スタートアップ、シャットダウン、失敗、そしてリクエストごとに最大で1行しか報告しません。

関連する問題