Memory Usage Increase in Log4j2 2.24.3 with Async Logging Due to RingBufferLogEvent
メンテナーはふだん 1 日以内に返信
まだ誰も着手していません。
評価
- 難易度
- 4/5
- 見積もり時間
- 3〜5日
- 初心者へのやさしさ
- 35/100
- issue の種類
- バグ
- 明瞭さ
- 説明が足りない
- 活発さ
- 停滞
- 技術スタック
- java
調査の方向性
Log4j2 2.23.1 と 2.24.3 の間に導入された RingBufferLogEvent および RingBuffer のメモリ管理の変更から着手し、提供された非同期ロギング設定を再現コンテキストとして使用します。両方のバージョンでヒープの挙動を比較し、報告された増加が想定されるものか回帰なのかを判断します。原因と再現可能な結果を文書化できれば完了です。
索引モデルが issue の本文から書いたものです。
説明
Description
I am using Log4j2 in my project and recently upgraded from version 2.23.1 to 2.24.3. The application employs an asynchronous logging strategy with Disruptor version 3.4.3. Below is the relevant configuration:
log4j2.contextSelector=org.apache.logging.log4j.core.async.AsyncLoggerContextSelectorlog4j2.asyncQueueFullPolicy=org.apache.logging.log4j.core.async.DiscardingAsyncQueueFullPolicylog4j2.discardThreshold=ERRORlog4j2.asyncLoggerWaitStrategy=Yieldlog4j2.asyncLoggerRingBufferSize=1048576
The logging frequency in my application is relatively low, averaging about 10 log entries per second. When using version 2.23.1, memory usage remained stable based on monitoring data . However, after upgrading to 2.24.3, I observed a gradual increase in memory usage over time, which eventually stabilizes at a fixed threshold.
This behavior differs significantly from what I experienced with 2.23.1. Through heap dump analysis at different time intervals, I confirmed that the memory growth is primarily associated with RingBufferLogEvent objects within Log4j2’s RingBuffer implementation, with the RingBuffer’s memory footprint consistently increasing over time.
I noticed that the 2.24.3 release includes several changes related to memory management. Could any of these changes, particularly those affecting the RingBuffer or RingBufferLogEvent, explain the behavior I am observing?
If additional details are needed, please let me know, and I’d be happy to provide them.
Environment
- Log4j2 Version: 2.24.3 (upgraded from 2.23.1)
- Disruptor Version: 3.4.3
- JVM: Zing24.08.101.0+1 (build 21.0.4.0.101+1-LTS)
- Logging Frequency: ~10 logs/second
- 主要言語
- Java
- スター
- 3.6k
- フォーク
- 1.8k
- 平均マージ
- 5日 6時間
- マージ済み PR(30日)
- 24
環境構築
- Dockerfile・Docker Compose ファイルなし
- プルリクエストのテンプレートあり
- コントリビューションガイドなし
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
apache/logging-log4j2 のほかの issue
-
additivity attributeオープンwaiting-for-maintainer
難易度 2/5 1〜3時間 初心者へのやさしさ 63/100
apache/logging-log4j2#4475 ·
メンテナーはふだん 1 日以内に返信
-
Migrate `log4j-api-test` tests to JUnit 5再び着手できるかも このイシューのプルリクエストはマージされずにクローズされました。 オープンapi priority: P3 tests waiting-for-maintainer
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
apache/logging-log4j2#4430 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
`Rfc5424Layout` does not escape the `newLineEscape` replacement in SD-PARAM-VALUE対応中かも @lunarbae628 が 5 日前に担当しました。 オープンbug layouts priority: P3
apache/logging-log4j2#4464 · コメント 2 件 · 担当者 1 名 ·
メンテナーはふだん 1 日以内に返信
-
configuration enhancement layouts
難易度 4/5 3〜5日 初心者へのやさしさ 55/100
apache/logging-log4j2#4463 ·
メンテナーはふだん 1 日以内に返信
-
`evaluateOnStartup="true"` saves logs under wrong file names after missing scheduled roll再び着手できるかも このイシューのプルリクエストはマージされずにクローズされました。 オープンappenders:Rolling bug priority: P1 waiting-for-maintainer
難易度 3/5 1〜2日 初心者へのやさしさ 30/100
apache/logging-log4j2#4449 ·
メンテナーはふだん 1 日以内に返信
apache/logging-log4j2 の issue をすべて見る
似ている issue
-
[Bug]: Nullable implicit operator on string extensible enums still throws for a null string対応中かも このイシューにリンクされたプルリクエストがオープン中、またはマージ済みです。 オープンbug emitter:client:csharp
難易度 2/5 1〜3時間 初心者へのやさしさ 84/100
microsoft/typespec#12572 · コメント 1 件 · リアクション 1 件 ·
メンテナーはふだん 1 日以内に返信
-
[BUG]: Java SDK MountRequest always sends update-optional fields, resetting stored mount settingsオープンbug
難易度 2/5 1〜3時間 初心者へのやさしさ 75/100
メンテナーはふだん 1 日以内に返信
-
GCC 15.2: -Wcast-qual warning - cast discards const qualifier from pointer target type (H5trace.c)オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 73/100
メンテナーはふだん 1 日以内に返信
-
[Bug] RemotingHelper.connect swaps the socket send and receive buffer configuration対応中かも @amalsaidov が今日担当しました。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 82/100
メンテナーはふだん 1 日以内に返信
-
needs-area-label
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
メンテナーはふだん 2 日以内に返信