我们有大约450个远程EJB客户端需要连接到Java EE服务器(OpenEJB 3.1.4容器)。没有HTTP服务器存在。单个Java EE服务器可以处理多少个远程EJB客户端?
我们注意到,在一些客户端联机后,服务器开始抛出javax.ejb.ConcurrentAccessTimeoutException。
该文档说,它是由尝试并发访问有状态会话Bean或方法中的单例bean时发生超时引起的。我们实际上使用了两者,但很难弄清楚超时的好价值可能是什么。
如果该值很高,我们会减少ConcurrentAccessTimeoutExceptions,但许多客户端只是开始永远挂在那里。如果该值较低,则会引发大量ConcurrentAccessTimeoutException。
所有450个客户端在启动时建立与服务器的连接(因为连接时间太长而无法按需提供)并永久保留。
现在,还有另一个问题,最重要的是,每个客户端都会以2秒的间隔持续轮询服务器。我们可以改变这种行为,但我们必须调整架构。
是否有研究或任何人有许多客户连接到Java EE服务器的经验?
我们可以设计任何需要的东西,但我们希望有一个更具体的目标。
嗯,我希望能有这样的想法:“我们设法让N个客户端拥有一台服务器”......我们升级到了OpenEJB 4,开始进行更多的测试。 – 2012-08-08 18:11:59
是的,没有确定的数字。第一个指标是应用程序代码本身。如果它有太多的同步,不管你投入的硬件如何,它都不能缩放。一旦被清除,第二个最重要的因素是服务器中的核心数量。如果您想离线与我联系,我很乐意看到我可以免费为您提供应用方面的建议。升级是好的,但如果应用程序不允许它将不会改变性能。 – 2012-08-08 20:26:25