gpt4 book ai didi

java - 哪个性能更高 - 读取 Jolokia 的 JMX 或通过 REST api 获取指标

转载 作者:行者123 更新时间:2023-11-30 06:38:39 24 4
gpt4 key购买 nike

一些基于 Java 的项目(例如 Solr)提供了两种获取指标的方法:

  1. 通过 Jolokia 读取 JMX mbean 和
  2. 通过 metrics REST apis 读取指标

理论上,什么会更高效?
(现在假设是单节点集群)。

看起来基于 Jolokia 的指标可能性能更高,因为 Jolokia 进程不会像 Jetty 那样通过服务器的 Web 容器。相反,Jolokia 会在 java 进程到 java 进程级别获取 JMX 指标。 REST API 肯定更容易理解和解析。然而,它涉及到通过jetty进行REST调用,可能会为每个请求占用一个线程?等等等等

Server ---> JMX ---> Jolokia ---> REST api of Jolokia
Server ---> REST api of Server itself

Jolokia 在这方面是否更轻?请注意,轻量意味着对服务器的影响,而不是整体延迟。指标获取调用应该尽可能减少对服务器的负担,并且指标获取调用的总体延迟实际上并不那么重要。

我们希望选择其中一种方法来每分钟从所有 Solr 节点查询指标并推送到 grafana。

对此的一些建议会很棒。

最佳答案

没有明确的答案(而且还没有任何基准)。但由于 Jolokia 可以被视为一个类似 REST 的界面,我预计不会有任何显着差异。事实上,ActiveMQ使用Jolokia作为其metrics 'REST' interface .

需要考虑以下成本因素:

  • (内部)指标查询本身
  • 与 JSON/XML 的序列化
  • 交通费用
  • HTTP 处理开销

这里每个指标访问都有类似的成本。为了公开指标,Jolokia 还使用 HTTP 服务器(JVM 内部服务器或 Jetty 等外部服务器),因此没有太大区别。

最大可能的差异可能是序列化成本(承担很大一部分负载),因此它取决于所使用的 JSON 序列化库。 Jolokia 这里使用 json-simple,已知为 quite speedy .

但是,一个非常重要的方面是应该查询哪些指标。由于每个自定义指标 API(例如您提到的 Solr)都会以各种格式公开不同类型的指标,因此您需要调整您的监控解决方案以适应它。相比之下,由于 Jolokia 公开了 JMX,这是一个标准,它更适用于不同的上下文。

但最终,只有真正的基准测试才能给你答案。

关于java - 哪个性能更高 - 读取 Jolokia 的 JMX 或通过 REST api 获取指标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44771588/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com