【问题标题】:Wildfly 10 Final indefinitely creating ActiveMQ-client-global-threadsWildfly 10 Final 无限期创建 ActiveMQ-client-global-threads
【发布时间】:2016-06-02 22:18:43
【问题描述】:

我有一个用于 JMS 的 Wildfly AS 设置,我正在使用 Jconsole 对其进行监控,并注意到在我什至在我的 ConsumerProducer 上创建会话之前,线程数正在稳步增加,我以前使用Wildfly 9 final 出于同样的目的,它的线程使用即使在使用过程中也很稳定,但是它有内存泄漏促使我升级。

Jconsole我可以看到:

Thread-2(ActiveMQ-client-global-threads-3258368)
Thread-4(ActiveMQ-client-global-threads-3258368)
Thread-5(ActiveMQ-client-global-threads-3258368)
Thread-6(ActiveMQ-client-global-threads-3258368)
.
.
.
Thread-16(ActiveMQ-client-global-threads-3258368)

我该如何解决这个问题?是否有我可以更改的设置导致这些线程产生,我可以从Jconsole 获取更多信息来帮助我解决这个问题吗?

【问题讨论】:

  • 我也有同样的问题...你解决了这个问题吗?

标签: jms activemq jconsole wildfly-10


【解决方案1】:

更新: 我尝试使用此配置,但它对我不起作用。 原因是 ActiveMq Artemis 使用一个固定的线程池执行器,它被配置为 500 个线程。在对 Artemis 进行一些更改后,它将在 Wildfly 中解决。 您可以在 Jira 中查看状态(查看最后的 cmets):

https://issues.jboss.org/browse/JBEAP-2947

论坛:

https://developer.jboss.org/thread/268397

解决方法:

sh standalone.sh -c standalone-full.xml -Dactivemq.artemis.client.global.thread.pool.max.size=30

原答案:

您是否尝试过设置远程连接属性?

 <connection-factory name="RemoteConnectionFactory"
 entries="java:jboss/exported/jms/RemoteConnectionFactory"
 connectors="http-connector" use-global-pools="false"
 thread-pool-max-size="10"/>

【讨论】:

  • 这是我在Jboss论坛上得到的解决方案,我本来打算回来回答问题的,你省了我的麻烦,谢谢你的意见。
  • 嗨 Johntk 我在与 wildfly 团队交谈后更新了答案。问候
  • 这个解决方案确实为我解决了问题,我使用的是 wildfly 10 CR4
  • 好的,约翰特克!我试过这个,但我无法解决我的问题......但是这个参数对我有用: sh Standalone.sh -c Standalone-full.xml -Dactivemq.artemis.client.global.thread.pool.max.size= 30
  • 只是想说明我们遇到了同样的问题,Artemis 在 Wildfly 10 上占用了我们的内存。我们通过将 artemis thread.pool.max.size 添加到 wildfly/bin/standalone.conf. Inside the default if 解决了这个问题阻止检查 Java 选项,我们添加了 JAVA_OPTS="$JAVA_OPTS -Dactivemq.artemis.client.global.thread.pool.max.size=100"
【解决方案2】:

您可以针对特定用例微调 MDB,只需根据预期限制将属性 useGlobalPools 设置为 false 和 threadPoolMaxSize

@MessageDriven(activationConfig = { 
    @ActivationConfigProperty(propertyName = "destinationLookup", propertyValue = "queue/emailQueue"),
    @ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Queue"),
    @ActivationConfigProperty(propertyName = "useGlobalPools", propertyValue = "false"),
    @ActivationConfigProperty(propertyName = "threadPoolMaxSize", propertyValue = "20"),
    @ActivationConfigProperty(propertyName = "acknowledgeMode", propertyValue = "Auto-acknowledge") })

如果您设置连接工厂属性use-global-pools="false"thread-pool-max-size="20" 在standalone.xml 中,甚至作为 VM 参数传递,您将拥有适用于所有 MDB 的全局行为,这可能不是一个好主意。

【讨论】:

    猜你喜欢
    • 2017-04-14
    • 1970-01-01
    • 2016-07-13
    • 2018-06-08
    • 2019-11-14
    • 2016-06-01
    • 2017-09-21
    • 1970-01-01
    • 2017-03-14
    相关资源
    最近更新 更多