是否有一个JMX应用程序可以支持的MBean的最大数目?如果有,那是什么?
提前致谢。
不,你被分配到你的JVM堆的限制。
我有一个相当大的应用程序,多租户工作。我们改变了我们的互动与图书馆和我们最终每个租户几个MBean。这导致大量的MBean注册的(数以万计)。我们观察到,这个漂亮的快速启动曲棍球棒的时间来注册一个bean(2,000它需要几秒钟)条款。我们观察到了大量线程阻塞的的mbean登记内,特别是:
该addAllMatching
和matchKeys
出现过的所有条目进行迭代,而不是使用Map.get
。另外两个是锁获取或同步。
我们有大量的空闲堆,并且CPU使用率是标称值(3-5%)。我们的应用程序的其他部分正常表现。总之,有围绕创建MBean的争夺,作为MBean数增长,以指数方式。所有这一切都是在JDK 11。
更糟的是,我们无法使用JMX和问题依然存在。该解决方案涉及到确保该库没有试图通过配置来注册的MBean。
简而言之:是的,它变得不切实际〜2000年后添加的MBean。我没有在不同的环境下进行试验这一点,所以个人的经验可能会有所不同。