更改异步的线程池大小后的JBoss Cpu使用率(%99)

时间:2016-10-17 10:50:03

标签: java multithreading java-ee jboss7.x threadpool

我有一个进行模拟的应用程序。那时它产生了许多ejb请求。我还从一个无状态bean调用异步方法(一个不同的bean)来进行大量数据插入。当我将我的应用程序迁移到Jboss EAP 6.4时,我的模拟时间增加了。通常情况下,模拟需要12秒。但现在需要160秒。我试图为异步消息更改我的ejb线程池。

这就是我所做的。

<session-bean>
    <stateless>
        <bean-instance-pool-ref pool-name="slsb-strict-max-pool"/>
    </stateless>
    <stateful default-access-timeout="5000" cache-ref="simple"/>
    <singleton default-access-timeout="5000"/>
</session-bean>
<mdb>
    <resource-adapter-ref resource-adapter-name="hornetq-ra"/>
    <bean-instance-pool-ref pool-name="mdb-strict-max-pool"/>
</mdb>
<pools>
    <bean-instance-pools>
        <strict-max-pool name="slsb-strict-max-pool" max-pool-size="20" instance-acquisition-timeout="5" instance-acquisition-timeout-unit="MINUTES"/>
        <strict-max-pool name="mdb-strict-max-pool" max-pool-size="20" instance-acquisition-timeout="5" instance-acquisition-timeout-unit="MINUTES"/>
    </bean-instance-pools>
</pools>
<caches>
    <cache name="simple" aliases="NoPassivationCache"/>
    <cache name="passivating" passivation-store-ref="file" aliases="SimpleStatefulCache"/>
</caches>
<passivation-stores>
    <file-passivation-store name="file"/>
</passivation-stores>
<async thread-pool-name="default"/>
<timer-service thread-pool-name="default" default-data-store="default-file-store">
    <data-stores>
        <file-data-store name="default-file-store" path="timer-service-data" relative-to="jboss.server.data.dir"/>
    </data-stores>
</timer-service>
<remote connector-ref="remoting-connector" thread-pool-name="default"/>
<thread-pools>
    <thread-pool name="default">
        <max-threads count="**300**"/>
        <keepalive-time time="100" unit="milliseconds"/>
    </thread-pool>

现在模拟像以前一样需要12秒。但现在我有另一个问题。模拟完成后,CPU为%99。释放资源大约需要30秒。如果我开始一个新的模拟,当CPU是%99时。我在代码中有一些锁。服务器等待调用所需的ejb方法。

我没有得到什么问题,我想我只更改了最大线程数,所以服务器应该只在必要时创建线程。

你能帮帮我吗?我在Jboss AS 6中没有这个问题。也许我在Jboss As6中进行了一些性能调整,但我无法记住。

编辑:我认为问题与对象数量有关。它与线程大小无关。我保持线程大小300并减少要插入的对象数量,然后cpu使用是正常的。我有400000数据库插入。可能是这个JPA实体让CPU忙碌。

0 个答案:

没有答案