【问题标题】:Websphere ejb poolWebsphere ejb 池
【发布时间】:2016-07-28 09:20:46
【问题描述】:

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....)并在为客户端提供服务后将其销毁。

谁能告诉我我是否正确?

【问题讨论】:

    标签: websphere websphere-8


    【解决方案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 个 bean 被销毁。硬限制 ('H500') 确保不会发生这种溢出。池的最大大小可以处理多达 500 个并发请求。其他请求必须等到 EJB 实例变为非活动状态(即返回池)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-01-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多