【问题标题】:Controlling JMS Server: too many MDBeans created (weblogic)控制 JMS 服务器:创建的 MDBean 过多(weblogic)
【发布时间】:2009-04-22 02:44:28
【问题描述】:

我有一个执行延迟操作的应用程序。用户生成 100 万条消息,这些消息存储在 JMS 队列中,然后 MDBean 使用这些消息并执行一些操作并将数据存储在数据库中。由于 JMS Queue 工作得太快,它会尝试创建 100 万个 MDBean 实例,而这些实例又会尝试创建 100 万个数据库连接。由于 JDBC 连接池无法处理 100 万个连接请求,因此其中一些超时也就不足为奇了。

控制创建的 MDBean 数量的最佳解决方案是什么? 100万条消息最好由一定数量的不超过JDBC池允许连接数的MDBean处理

【问题讨论】:

    标签: jdbc jms weblogic jboss-mdb


    【解决方案1】:

    您可以通过使用 weblogic-ejb-jar.xml 中 bean 描述符中的 max-beans-in-free-pool 元素来限制 MDB 实例的数量。

    <message-driven-descriptor>
       <pool>
          <max-beans-in-free-pool>100</max-beans-in-free-pool>
          <initial-beans-in-free-pool>50</initial-beans-in-free-pool>
       </pool>
       ...
    </message-driven-descriptor>
    

    如果未指定,则创建的实例数将仅受可用线程数的限制。无论如何,最好将最大线程数设置为等于或小于数据库连接池的大小。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-01-09
      • 1970-01-01
      • 2011-10-20
      • 2018-07-26
      • 2020-02-15
      • 2016-08-02
      • 2011-05-21
      • 2016-07-17
      相关资源
      最近更新 更多