2016-07-28 79 views
0

此处的文档http://www.ibm.com/support/knowledgecenter/SS7JFU_7.0.0/com.ibm.websphere.express.doc/info/exp/ae/rejb_ecnt.html指出,每个ejb默认创建最少50个,最多500个实例。Websphere ejb pool

比方说,在给定的时间点,500个客户正在尝试使用该服务。这是否意味着在任何时间之后都会有500个实例?或者服务器在一段时间之后销毁实例,并且没有传入客户端?

在进一步阅读后,我遇到了一个叫硬限制H的东西,它强制/告诉容器不要创建超过指定的最大实例数。

所以,我在50500的情况下理解是

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

谁能告诉我,如果我是对的?

回答

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

相关问题