log4j2.asyncLoggerRingBufferSize的插槽大小是多少

时间:2018-08-14 19:54:35

标签: java log4j buffer

官方文档说明了插槽数,但没有说明每个插槽的大小:

https://logging.apache.org/log4j/2.x/log4j-core/apidocs/org/apache/logging/log4j/core/async/AsyncQueueFullPolicy.html

我搜索了一下,但也没有得到太多信息。

SO:Understand Ring Buffer in async Logger

我正在运行一项服务,该服务以很高的频率记录巨大的堆栈跟踪(〜50行),从而导致总体延迟增加。当我修剪那些堆栈轨迹时,等待时间减少了。我以〜3MB / s的速度记录日志,并且记录器环形缓冲区的大小为默认值(256 * 1024)。我想知道我是否正在填充此队列,从而导致延迟增加。如果设置为256 * 1024,此队列的大小以MB为单位?

1 个答案:

答案 0 :(得分:0)

延迟可能是由Log4j 2 ThrowableProxy引起的。目前正在对此进行调查,请参见https://issues.apache.org/jira/browse/LOG4J2-2391

要查找内存中环形缓冲区插槽的实际大小,请使用JOL工具(http://openjdk.java.net/projects/code-tools/jol/)。从JOL文档中:

  

...大量使用Unsafe,JVMTI和Serviceability Agent(SA)解码实际的对象布局,覆盖区和引用。这使JOL比其他工具更加准确...