JMX 应用程序可以支持的 MBean 的最大数量是多少?如果有,那是什么?
提前致谢。
我使用一个相当大的多租户应用程序。我们更改了与库的交互,最终每个租户都有多个 MBean。这会导致大量 MBean 注册(数万)。我们观察到,就注册 bean 的时间而言,这开始曲棍球棒的速度非常快(在 2,000 时需要几秒钟)。我们在 mbean 注册中观察到很多线程阻塞,具体来说:
addAllMatching
andmatchKeys
似乎遍历所有条目,而不是使用Map.get
. 另外两个是锁获取或同步。
我们有大量的空闲堆,CPU 使用率是正常的(3-5%)。我们应用程序的其他部分表现正常。简而言之,随着 MBean 的数量以指数方式增长,围绕创建 MBean 存在争议。所有这些都在 JDK 11 上。
更糟糕的是,我们禁用了 JMX,问题仍然存在。该解决方案涉及确保库不尝试通过配置注册 mbean。
简而言之:是的,在 ~2000 年之后添加 MBean 变得不切实际。我没有在不同的环境中对此进行过测试,因此个人体验可能会有所不同。
不,您仅受分配给 JVM 的堆的限制。