2017-12-25 8 views
0

私はlog4j2 2.10.0を使用して、次のコードを持っている:cq4とログの両方が同じディレクトリに書き込みを行っているクロニクルキュー+ log4j2非同期ロガー

SingleChronicleQueue q = SingleChronicleQueueBuilder.binary(args[0]).blockSize(536870912).build(); 
    ExcerptAppender a = q.acquireAppender(); 

    char[] chars = "abcdefghijklmnopqrstuvwxyz".toCharArray(); 
    StringBuilder sb = new StringBuilder(); 
    Random random = new Random(); 
    for (int i = 0; i < 1000; i++) { 
     char c = chars[random.nextInt(chars.length)]; 
     sb.append(c); 
    } 
    String t = sb.toString(); 

    for (int i = 0; i < 1000000; i ++) { 
     m_logger.info(i + " " + t); 
     a.writeText(t); 
    } 

を。

そして、私はそれが6秒遅れ作られたIO操作のいくつかの並べ替えがあります

12:40:00.853 - [main] INFO c.c.c.a.r.SandboxApp 601049 
    12:40:00.853 - [main] INFO c.c.c.a.r.SandboxApp 601050 
    12:40:00.853 - [main] INFO c.c.c.a.r.SandboxApp 601051 
    12:40:06.156 - [main] INFO c.c.c.a.r.SandboxApp 601052 

見ることができるまで、ログには、それは罰金を爆破されました。

私はwriteTextをコメントアウトすると消えてしまいますが、それはクロニクルの問題かlog4j2か分かりません。

マイlog4j2パラメータは

-DLog4jContextSelector = org.apache.logging.log4j.core.async.AsyncLoggerContextSelector -DAsyncLogger.RingBufferSize = 65536 * 65536 -DAsyncLogger.WaitStrategy =スリープ-Dlog4j2.AsyncQueueFullPolicy =廃棄-Dlog4j2です.DiscardThreshold = INFO

はここでプロファイラが

Profiler

感謝を示しているものです!

答えて

0

メモリマップファイルの操作を開始したら、Javaの領域を離れ、オペレーティングシステム(およびハードウェア)の世界を入力します。

質問1:どのオペレーティングシステム(およびどのバージョン)を使用していますか?

質問2:あなたのマシンにはどれくらいの物理メモリがありますか?

質問3:どのハードディスクを使用していますか? SSDまたはスピンディスク?

2017年には、書き込み速度が200 MB /秒を超えるコンシューマグレードのスピンディスクは非常に高速です。これと比較して、最も速いSSDはthis 2017 comparisonで、1900 MB /秒です。

メモリマップファイルに約2GBを書き込もうとしました。それはある時点で物理ディスクと同期する必要があります。その同期は簡単に6秒かかるかもしれません...

メモリマップされたファイルの "楽しさ"は、この同期がいつ発生するかをほとんど制御できないことです。人々は、これらの休止があまり大きくならないように、より小さなファイルに分割してしまいます。この種のアプリケーションのパフォーマンスを調整するには、黒魔術のいくつかの側面があります。この分野で学ぶべきことはたくさんあります。楽しみな時間を先へ!楽しい!

ところで

、あなたが設定することはできません

-DAsyncLogger.RingBufferSize=65536*65536 # not a number 

Log4j2が失敗する番号として65536*65536を解析しようとすると、それは代わりにデフォルトのバッファサイズを使用するようにフォールバックします。希望するリングバッファサイズをバイト()で指定する必要があります。

+0

よろしくお願いいたします。私はより速いディスクを見つけました、そして問題はなくなりました。だから私は以前のマウント/ドライブが遅すぎると思っています。ありがとう!私はパフォーマンスをチューニングします!万が一、これらのことを調べるための参照/ウェブサイト/書籍がありますか? – Mag

関連する問題