【问题标题】:Maximum number of MBeans in JMXJMX 中的最大 MBean 数
【发布时间】:2013-03-22 08:53:35
【问题描述】:

JMX 应用程序可以支持的 MBean 的最大数量是多少?如果有,那是什么?

提前致谢。

【问题讨论】:

    标签: java monitoring jmx max mbeans


    【解决方案1】:

    我使用的是一个相当大的多租户应用程序。我们更改了与库的交互,最终每个租户都有多个 MBean。这会导致大量 MBean 注册(数万)。我们观察到,就注册 bean 的时间而言,这开始曲棍球棒的速度非常快(在 2,000 时需要几秒钟)。我们在 mbean 注册中观察到很多线程阻塞,具体来说:

    • com.sun.jmx.mbeanserver.Repository.contains(ObjectName):461
    • com.sun.jmx.mbeanserver.Repository.addAllMatching(Map, Set, ObjectNamePattern):229
    • com.sun.jmx.mbeanserver.Repository.addMBean(DynamicMBean, ObjectName, 注册上下文):415
    • com.sun.jmx.mbeanserver.Repository.ObjectNamePattern.matchKeys(ObjectName):190

    addAllMatchingmatchKeys 似乎会遍历所有条目,而不是使用 Map.get。另外两个是锁获取或同步。

    我们有大量空闲堆,CPU 使用率是正常的 (3-5%)。我们应用程序的其他部分表现正常。简而言之,随着 MBean 的数量以指数方式增长,围绕创建 MBean 存在争议。所有这些都在 JDK 11 上。

    更糟糕的是,我们禁用了 JMX,问题仍然存在。解决方案涉及确保库不会尝试通过配置注册 mbean。

    简而言之:是的,在 ~2000 年之后添加 MBean 变得不切实际。我没有在不同的环境中对此进行过测试,因此个人体验可能会有所不同。

    【讨论】:

      【解决方案2】:

      不,您只受分配给 JVM 的堆的限制。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-08-09
        • 2018-07-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多