线程池配置Java应用服务器

没有人

我正在维护一个几乎没有作为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. 增加等于http-threadpool值的EJB实例数(最大值)是否有意义?

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

加布里埃尔·阿兰布鲁

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

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

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

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

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

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

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

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

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

研究支持Java 8的应用服务器

来自分类Dev

在 Azure 中配置主动-被动 Web 应用服务器

来自分类Dev

JBOSS应用服务器和Servlet

来自分类Dev

Android聊天应用服务器的建议?

来自分类Dev

marklogic用户应用服务器

来自分类Dev

流星作为纯应用服务器

来自分类Dev

Quarkus内部使用哪个应用服务器?

来自分类Dev

Delphi SOAP应用服务器中的WebModule

来自分类Dev

Hapshmap 与 tomcat 应用服务器

来自分类Dev

分离 REST API 和应用服务器

来自分类Dev

通过Maven支持多个应用服务器

来自分类Dev

与应用服务器不同的服务器上的视频转换

来自分类Dev

即使应用服务器 puma 关闭,rails 服务器如何提供页面?

来自分类Dev

结合 Angular 2 应用服务器和 REST 服务器模块

来自分类Dev

只有配对后,Android应用才能通过蓝牙连接到Java应用服务器

来自分类Dev

获取应用服务器服务请求的IP

来自分类Dev

何时断开Bosh连接从应用服务器建立以使用预绑定?

来自分类Dev

如何验证我的Tomcat应用服务器正确支持FIPS 140-2?

来自分类Dev

防止jboss应用服务器被负载均衡器占用?

来自分类Dev

如何使用HTTP“主机”标头(使用GoLang)定位特定的应用服务器

来自分类Dev

将Couchbase用作应用服务器时是否提供图片?

来自分类Dev

快递应用服务器。侦听所有接口,而不是仅侦听localhost

来自分类Dev

什么时候需要用于Firebase Cloud Messaging的应用服务器?

来自分类Dev

关于数据库的Docker多应用服务器的架构

来自分类Dev

管理两个应用服务器之间的会话

来自分类Dev

WSO2 ESB部署在应用服务器(例如WebLogic)上

来自分类Dev

从AWS ELB将子域传递到应用服务器

来自分类Dev

何时将数据加载到应用服务器的内存中?

来自分类Dev

Docker应用服务器的IP地址127.0.0.1的差异为0.0.0.0 ip

Related 相关文章

  1. 1

    研究支持Java 8的应用服务器

  2. 2

    在 Azure 中配置主动-被动 Web 应用服务器

  3. 3

    JBOSS应用服务器和Servlet

  4. 4

    Android聊天应用服务器的建议?

  5. 5

    marklogic用户应用服务器

  6. 6

    流星作为纯应用服务器

  7. 7

    Quarkus内部使用哪个应用服务器?

  8. 8

    Delphi SOAP应用服务器中的WebModule

  9. 9

    Hapshmap 与 tomcat 应用服务器

  10. 10

    分离 REST API 和应用服务器

  11. 11

    通过Maven支持多个应用服务器

  12. 12

    与应用服务器不同的服务器上的视频转换

  13. 13

    即使应用服务器 puma 关闭,rails 服务器如何提供页面?

  14. 14

    结合 Angular 2 应用服务器和 REST 服务器模块

  15. 15

    只有配对后,Android应用才能通过蓝牙连接到Java应用服务器

  16. 16

    获取应用服务器服务请求的IP

  17. 17

    何时断开Bosh连接从应用服务器建立以使用预绑定?

  18. 18

    如何验证我的Tomcat应用服务器正确支持FIPS 140-2?

  19. 19

    防止jboss应用服务器被负载均衡器占用?

  20. 20

    如何使用HTTP“主机”标头(使用GoLang)定位特定的应用服务器

  21. 21

    将Couchbase用作应用服务器时是否提供图片?

  22. 22

    快递应用服务器。侦听所有接口,而不是仅侦听localhost

  23. 23

    什么时候需要用于Firebase Cloud Messaging的应用服务器?

  24. 24

    关于数据库的Docker多应用服务器的架构

  25. 25

    管理两个应用服务器之间的会话

  26. 26

    WSO2 ESB部署在应用服务器(例如WebLogic)上

  27. 27

    从AWS ELB将子域传递到应用服务器

  28. 28

    何时将数据加载到应用服务器的内存中?

  29. 29

    Docker应用服务器的IP地址127.0.0.1的差异为0.0.0.0 ip

热门标签

归档