【问题标题】:What is the reason for the increase of heap usage when the aeron cluster is idle?aeron集群空闲时堆使用率增加的原因是什么?
【发布时间】:2023-02-08 08:54:47
【问题描述】:

我们使用 aeron 库。而在系统完全空闲的时候监控堆之后,我们看到堆的使用率增加了,查看日志之后,我们发现了这些东西。增加的原因是什么?监控结果已发送。

{"log":"释放日志缓冲区失败尝试的 prevVal 是:0.0\n","stream":"stdout","time":"2022-12-19T04:00:29.992379754Z"} {"log":"我们尝试获取 Sender 流量控制限制,即背压事件值,并将其作为 aeron_sender_flow_control_limits__i_e__back_pressure_events\n","stream":"stdout","time":"2022-12-19T04:00 :29.992383872Z"} {"log":"Sender流控限制的currentValue,即背压事件为:36\n","stream":"stdout","time":"2022-12-19T04:00:29.992387994Z" } {"log":"Sender流控限制prevVal,即背压事件为:36.0\n","stream":"stdout","time":"2022-12-19T04:00:29.99239165Z" } {"log":"我们尝试获取 Unblocked Publications 值并将其作为 aeron_unblocked_publications\n","stream":"stdout","time":"2022-12-19T04:00:29.992395649Z"}

【问题讨论】:

  • 请提供足够的代码,以便其他人可以更好地理解或重现问题。

标签: aeron


【解决方案1】:

这是一个假设...

为了实现 Aeron 标榜的高可用性和低延迟特性,它需要定期发送消息来检查集群中的节点是否都还活着。即使集群处于空闲状态,这些消息的发送、接收和处理也会继续。这是您正在观察的堆使用的可能(IMO 可能)原因。

我怀疑日志事件是巧合。它们似乎没有任何重要意义。

【讨论】:

    【解决方案2】:

    显示的日志消息看起来不像 Aeron 日志消息。 “we try to get”文本没有出现在 Aeron 代码库中的任何地方。这表明这些日志消息来自扫描 Aeron 计数器的第三方监控应用程序。许多监控客户端在构建时并未考虑零垃圾操作。我建议在应用程序空闲时使用分配分析器(例如异步分析器)来查找分配的来源。

    【讨论】:

      猜你喜欢
      • 2010-11-13
      • 1970-01-01
      • 1970-01-01
      • 2020-01-26
      • 2011-06-07
      • 2023-03-06
      • 2015-01-18
      • 2015-07-06
      • 2010-12-03
      相关资源
      最近更新 更多