4

JavaロギングとFileHandlerを使用して、J2EEWebアプリケーションでビジネスイベントをロギングすることを検討しています。

多くのログレコードが1つのファイルに書き込まれるため、パフォーマンスのボトルネックが発生する可能性があるのではないかと思います。

あなたの経験や意見は何ですか?

忙しいWebアプリケーションをJavaロギングとFileHandlerを使用して1つのファイルにロギングすると、パフォーマンスのボトルネックになる可能性がありますか?

4

5 に答える 5

4

それはすべて、追加するログステートメントの量によって異なります。コードのすべての行の後にロギングを追加すると、パフォーマンスが確実に低下するはずです。

重要なケースにロギングを使用し、現在の目的(テストまたは実際の展開)に適したロギングレベルを設定し、次のような構造を使用します

if (Logger.isDebugEnabled()) {
   Logger.debug("Value is " + costlyOperation()")
}

実行にコストがかかるコードの呼び出しを回避するため。

この記事もチェックしてみてください

于 2011-05-17T06:18:50.623 に答える
3

「状況によって異なります」や「少し」などの一般性を回避するには、ロギングのオーバーヘッドがある場合とない場合のアプリケーションのパフォーマンスを測定する必要があります。Apache JMeterは、テストの負荷を生成するのに役立ちます。

ロギングを通じて収集できる情報は、通常、アプリケーションの整合性にとって非常に重要であるため、盲目的に操作することはできません。Google Analyticsを使用する場合にもわずかなオーバーヘッドがありますが、メリットが優先されます。

ログファイルを適切なサイズに保つために、常にローテーションログファイルを使用できます。

于 2011-05-17T06:37:41.123 に答える
1

JavaRevisitedブログには、パフォーマンスの問題に関するかなり良い投稿があると思います。Javaでのログインに関するトップ10のヒント

于 2011-05-17T06:19:27.087 に答える
1

最近のプロジェクトでは、監査イベントをデータベーステーブルに記録し、パフォーマンスが心配だったので、「非同期」モードでログインする機能を追加しました。このモードでは、ロガーは優先度の低いバックグラウンドスレッドで実行され、メインスレッドからログを記録するという動作は、バックグラウンドのログスレッドによって遅延取得および書き込みされるログイベントをキューに配置するだけです。

ただし、このアプローチは、処理に自然な「中断」がある場合にのみ機能します。システムが常にビジー状態の場合、キューが空になることはありません。これを解決する1つの方法は、キュー内のログメッセージの数に応じて、バックグラウンドスレッドをよりアクティブにすることです(まだ実装していない拡張機能)。

于 2011-05-17T06:44:18.547 に答える
1

あなたがすべき:

  1. パフォーマンスの適切なメトリック(応答性、スループットなど)を定義します。次に、すべてのロギングをオフにしてからオンにして、このメトリックを測定する必要があります。違いは、ロギングのコストです。

  2. 次に、さまざまなロギングライブラリとそれらが提供するモードを試して、観察された違いを文書化する必要があります。

私の個人的な経験では、私が取り組んだ3つのプロジェクトすべてについて、非同期ロギングがアプリケーションのスループットを大幅に向上させるのに役立つことがわかりました。しかし、同じことが当てはまらない場合もあるので、慎重に測定してから決定を下してください。

以下はあなたの質問に直接関係していません。

あなたが特にビジネスロギングについて言及していることに気づきました。この場合、ログファイルが大きくなり、理解が困難になった場合に備えて、ログを適切かつクリーンに保つこともできます。この領域には、一般的に受け入れられているデザインパターンがあります。関数ごとにログを記録します。これは、ビジネスロギング(たとえば、顧客が払い戻しを要求した)が別の宛先に行き、インターフェースロギングが別の宛先に行き(たとえば、ユーザーが賛成ボタンをクリックした!=ユーザーが回答に賛成した)、クロスシステムコールが行われることを意味します別の宛先へ(たとえば、支払いゲートウェイを介したクリアランスの要求)。プロセスのタイムラインを確認するためだけにすべてのイベントを含むマスターログファイルを保持する人もいれば、必要に応じてタイムラインを作成するためのログマイナー/スクレーパーを設計する人もいます。

お役に立てれば、

于 2011-05-23T13:23:16.280 に答える