Websphere ejb池

时间:2016-07-28 09:20:47

标签: websphere websphere-8

此处的文档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的情况下理解的是

  1. 在任何时候都会有最多的实例数(500)。
  2. 如果有更多客户端尝试连接,服务器将为每个客户端创建一个新实例(501,502,503 ....),并在为客户端提供服务后将其销毁。
  3. 有人可以告诉我,如果我是对的吗?

1 个答案:

答案 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实例变为非活动状态(即返回池)。