Java JBoss7-线程仅在60秒后重新释放

Java JBoss7-线程仅在60秒后重新释放,java,http,jboss7.x,threadpool,Java,Http,Jboss7.x,Threadpool,收到请求后,http线程在60秒内保持忙碌状态。使用JConsole,我可以看到,在这段时间内,线程保持在: State: RUNNABLE Stack trace: java.net.SocketInputStream.socketRead0(Native Method) java.net.SocketInputStream.read(SocketInputStream.java:150) java.net.SocketInputStream.read(SocketInputStream.j

收到请求后,http线程在60秒内保持忙碌状态。使用JConsole,我可以看到,在这段时间内,线程保持在:

State: RUNNABLE
Stack trace: 
java.net.SocketInputStream.socketRead0(Native Method)
java.net.SocketInputStream.read(SocketInputStream.java:150)
java.net.SocketInputStream.read(SocketInputStream.java:121)
org.apache.coyote.http11.InternalInputBuffer.fill(InternalInputBuffer.java:721)
org.apache.coyote.http11.InternalInputBuffer.parseRequestLine(InternalInputBuffer.java:359)
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:821)
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:653)
org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:508)
org.jboss.threads.SimpleDirectExecutor.execute(SimpleDirectExecutor.java:33)
org.jboss.threads.QueueExecutor.runTask(QueueExecutor.java:806)
org.jboss.threads.QueueExecutor.access$100(QueueExecutor.java:45)
org.jboss.threads.QueueExecutor$Worker.run(QueueExecutor.java:826)
java.lang.Thread.run(Thread.java:722)
org.jboss.threads.JBossThread.run(JBossThread.java:122)

为什么会这样?线程不应该立即使用和释放吗?这会在高峰时间影响我的服务器,导致长时间等待

有人可以向我解释这种行为,以及我如何禁用它或缩短60秒的时间

谢谢大家,,
非常感谢

您的线程正在阻止套接字读取操作。因为您使用的是Java的阻塞套接字I/O,所以HTTP连接池中的每个连接都必须有一个与之关联的线程,等待新的请求


解决方案是减少HTTP连接池中的空闲超时。

我不熟悉JBoss,但我想知道这是否与保持活动配置有关。保持活动时间设置为10秒。在Jboss中,keep alive time表示线程在被销毁之前处于活动状态的时间。但我有150个核心线程,它们永远不会被破坏,在这些线程上,“保持生存”时间没有任何作用。。。Obrigado Augusto连接池中的空闲超时与保持活动时间不同?因为改变时间没有任何作用。感谢您的回答…阅读您在问题下的评论,“保持活动”是线程池上的一个设置,与空闲线程有关。此线程不是空闲线程,因为它被主动分配给读取套接字的任务。我对JBoss了解不够,无法确定这些线程是从哪个线程池分配的(如果有的话)。这些线程是从http线程池分配的,我称之为“executor”,我定义从150个核心线程开始。这些线程永远不会被破坏,应该足够了。但是,由于每次请求都会停留60秒,因此结果证明这是不够的。因此,您可以配置空闲HTTP连接超时。不幸的是,没有谷歌我不知道在哪里配置。