jboss关闭时,有界队列线程池线程未终止



我在Jboss 7.2.0 standalone.xml中创建了一个有界队列线程池,如下所示:

<subsystem xmlns="urn:jboss:domain:threads:1.1">
    <bounded-queue-thread-pool name="myThreadPool">
    <core-threads count="6000"/>
    <queue-length count="1000"/>
    <max-threads count="6000"/>
    <keepalive-time time="60" unit="seconds"/>
    </bounded-queue-thread-pool>
</subsystem>

之后,我在AJP连接器中使用它作为执行器,如下所示:

<connector name="conn1" protocol="AJP/1.3" scheme="http" socket-binding="conn1" enabled="true" max-post-size="0" executor="myThreadPool" max-connections="2000"/>
<connector name="conn2" protocol="AJP/1.3" scheme="http" socket-binding="conn2" enabled="true" executor="myThreadPool" max-connections="2000"/>
<connector name="conn3" protocol="AJP/1.3" scheme="http" socket-binding="conn3" enabled="true" executor="myThreadPool" max-connections="2000"/>

在末端,用于3个连接器的插座绑定:

<socket-binding name="conn1" port="15007"/>
<socket-binding name="conn2" port="15008"/>
<socket-binding name="conn3" port="15009"/>

当我启动jboss并创建多个http请求时,每个请求线程都创建为myThreadPool-threads-1myThreadPool-threads-2等。但是,当我使用命令行关闭jboss时,这些线程不会被终止。这是我用来关闭的命令:

%JBOSS_HOME%binjboss-cli.bat --connect controller=10.10.54.85:9999 --commands=:shutdown

因此,jboss AS的java进程不会被杀死。然而,当我简单地从connector中删除executor时,java进程就成功终止了。有人能建议我如何在服务器关闭时终止线程池的所有线程吗?

可能是这个错误导致了您的问题,设置了一个解决方法:

org.apache.coyote.ajp.DEFAULT_CONNECTION_TIMEOUT

将以下内容添加到host.xmlstandalone.xmldomain.xml中的system-properties中:

<system-properties>
    <property name="org.apache.coyote.ajp.DEFAULT_CONNECTION_TIMEOUT" value="600000"/>
<system-properties>

除非我们不断地向服务器发送请求,否则这是有效的。

另请参阅:在连接器中指定执行程序时,服务器在关闭期间挂起

最新更新