java - log4j2.asyncLoggerRingBufferSize 的插槽大小是多少
问题描述
官方文档解释了插槽的数量,但没有说明每个插槽的大小:
我搜索了一下,但也没有得到太多信息。
我正在运行一项服务,该服务以非常高的频率记录大量堆栈跟踪(约 50 行),导致整体延迟增加。当我修剪这些堆栈跟踪时,延迟会减少。我以 ~3MB/s 的速度记录,我的记录器环形缓冲区大小是默认值 (256 * 1024)。我想知道我是否正在填满这个队列导致延迟增加。如果设置为 256 * 1024,此队列的大小(以 MB 为单位)是多少?
解决方案
延迟可能是由 Log4j 2 ThrowableProxy 引起的。这目前正在调查中,请参阅https://issues.apache.org/jira/browse/LOG4J2-2391
要查找内存中 ringbuffer 插槽的实际大小,请使用 JOL 工具 ( http://openjdk.java.net/projects/code-tools/jol/ )。来自 JOL 文档:
... 大量使用 Unsafe、JVMTI 和 Serviceability Agent (SA) 来解码实际的对象布局、占用空间和引用。这使得 JOL 比其他工具更准确......
推荐阅读
- java - 如何从 Volley JSON 响应中删除用户?
- javascript - 如何将一个函数传递给另一个函数,并将该函数的参数传递给该函数被保存?
- python - 用于 Chrome 的 Selenium 和 WebDriver 无法在 JupyterLab (Mac) 上运行
- c - 在使用循环期间或在任何其他情况下,有什么方法可以停止以前的工作输入?
- python - Python 元组列表到字典,其值为元组列表中所有相似项的列表
- laravel - 如何使用 auth laravel 进行自定义登录注册和注销?
- matplotlib - MatplotlibDeprecationWarning:不区分大小写的属性在 3.3 中已弃用,支持将在两个次要版本后删除
- python - 使用 Python 获取准确时间
- hash - 是否可以找到哈希时使用的盐?
- javascript - 当浏览器不是 100%(大小)时如何获取 max-innerHeight