此处的文档http://www.ibm.com/support/knowledgecenter/SS7JFU_7.0.0/com.ibm.websphere.express.doc/info/exp/ae/rejb_ecnt.html提到默认情况下每个ejb创建最少50个实例和最多500个实例。
让我们说在给定的时间点,500个客户正在尝试使用该服务。这是否意味着从任何时候都会有500个实例?或者服务器会在一段时间后和没有传入客户端时销毁实例吗?
在进一步阅读之后,我遇到了一个叫做硬限制H的东西,强制/告诉容器不要创建超过指定的最大实例数。
所以我在50,500的情况下理解的是
有人可以告诉我,如果我是对的吗?
答案 0 :(得分:1)
池化EJB实例允许您保存系统资源。假设您在给定点需要100个EJB实例。您初始化bean,处理逻辑然后销毁它们。如果之后需要额外的100个实例,则需要重新执行此操作。这给系统资源带来了压力。
当您汇集EJB实例时,它们会移入和移出EJB容器维护的池。活动实例处理传入的请求,而被动实例则保留在池中。要控制池的大小,池中的实例数应该有上限和下限。
考虑默认设置:最小值为50个实例,最大值为500个实例。服务器启动时,服务器上没有EJB实例。当您的应用程序获得并发请求/命中时,池大小会增加。我们假设有30个并发命中。池大小保持为30. WebSphere不会创建其他实例来将池大小维持在最小值。之后,假设并发命中数增加到75然后降到50以下。此时,WebSphere将销毁额外的25个EJB实例并将池大小维持在50.现在,如果将下限定义为“H50”(硬限制),WebSphere将在服务器/应用程序启动时花费资源来创建50个EJB实例。因此,池大小永远不会低于50。
现在让我们看看上限,即500.随着并发命中数的增加,池大小增加并超过500.超出此限制,WebSphere会尝试通过尽快销毁EJB实例来降低池大小他们变得不活跃(即返回游泳池)。但是,EJB实例可以继续超出此限制。如果您有600个并发请求,则将有600个EJB实例。如果它降至540,则额外的60个豆被销毁。硬限制('H500')确保不会发生这种溢出。可以在池的最大大小处理多达500个并发请求。其他请求必须等到EJB实例变为非活动状态(即返回池)。