【发布时间】: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">
现在是问题。
如果 http 线程池接收到需要同步执行的任务,并且池中没有足够的 EJB bean 实例(最大配置为 50),因为所有 EJB 实例都在服务其他 http 请求,会发生什么? 注意:我们正在进行 JNDI 查找,而不是使用 @EJB 注释。
将 EJB 实例的数量(最大值)增加到等于 http-threadpool 值是否有意义?
在进行了一些分析之后,我们注意到查找 EJB 实例的代码需要很长时间才能返回。这是否意味着没有可用的 EJB 实例,请求必须等到其他正在运行的线程释放一个实例?
【问题讨论】:
标签: java glassfish ejb threadpool