【问题标题】:Thread pool configuration Java app server线程池配置 Java 应用服务器
【发布时间】:2013-12-24 12:13:37
【问题描述】:

我正在维护一个应用程序,该应用程序几乎没有公开为 SOAP Web 服务的服务。我最近遇到了一些扩展问题,因为应用程序收到的负载比正常情况多。

我想知道我对少数池配置的理解是否正确, 1.我们的线程池配置如下,

<thread-pools>
    <thread-pool name="admin-thread-pool" max-thread-pool-size="50" max-queue-size="1024"></thread-pool>
    <thread-pool name="http-thread-pool" max-thread-pool-size="250"></thread-pool>
    <thread-pool name="http-thread-pool-internal" max-thread-pool-size="50"></thread-pool>
    <thread-pool name="thread-pool-1" max-thread-pool-size="200"></thread-pool>
</thread-pools>

<transports>
    <transport name="tcp" acceptor-threads="8"></transport>
</transports>

和 2. EJB池配置如下,

<ejb-container steady-pool-size="0" max-pool-size="50"  pool-resize-quantity="10">

现在是问题。

  1. 如果 http 线程池接收到需要同步执行的任务,并且池中没有足够的 EJB bean 实例(最大配置为 50),因为所有 EJB 实例都在服务其他 http 请求,会发生什么? 注意:我们正在进行 JNDI 查找,而不是使用 @EJB 注释。

  2. 将 EJB 实例的数量(最大值)增加到等于 http-threadpool 值是否有意义?

在进行了一些分析之后,我们注意到查找 EJB 实例的代码需要很长时间才能返回。这是否意味着没有可用的 EJB 实例,请求必须等到其他正在运行的线程释放一个实例?

【问题讨论】:

    标签: java glassfish ejb threadpool


    【解决方案1】:

    如果http线程池收到一个需要同步执行的任务,并且池中没有足够的EJB bean实例(最大配置为50),因为所有EJB实例都在服务其他http请求,会发生什么?

    EJB 池不是 JEE 规范的一部分,因此,池行为取决于供应商。根据 Glassfish documentation(可能这可能因版本而异),如果池大小小于 steady-pool-size,当新请求到达时,容器将创建 X 个新的 ejb 实例,其中 X 由 pool-resize-quantity 值确定。因此,您不应该用完汇集的 ejb。 max-pool-size 不是固定限制。

    将 EJB 实例的数量(最大值)增加到等于 http-threadpool 值是否有意义?

    这可能是对的,但请注意,如果在高负载期间需要更多 ejb,Container 会自动增加池大小。 我会将 steady-pool-size 更改为大于 0 的值。

    在进行了一些分析之后,我们注意到查找 EJB 实例的代码需要很长时间才能返回。这是否意味着没有可用的 EJB 实例,请求必须等到其他正在运行的线程释放一个实例?

    万一(可能是配置错误的池)服务器用完了可用的 ejb,它更有可能创建一个新实例而不是序列化客户端请求。这就是规范(ejb 3.1)所说的:

    4.7 无状态会话 Bean ...如果需要一个无状态会话 bean 实例来处理客户端工作负载的增加,该容器会创建另一个无状态会话 bean 实例...

    创建一个新的 ejb 实例不应该太昂贵,除非你的 bean 必须在初始化时执行特定的业务逻辑(例如 @PostConstruct 注释方法中的逻辑)。

    请记住,在高负载下,还有其他比池配置更相关的问题需要监控,例如 CPU 和内存服务器使用情况。

    【讨论】:

      猜你喜欢
      • 2021-06-01
      • 2011-08-21
      • 2020-01-22
      • 2010-11-29
      • 1970-01-01
      • 2011-07-14
      • 2014-07-20
      • 2013-11-15
      • 2014-04-10
      相关资源
      最近更新 更多