Tomcat版本:7.0.92
我在我的应用程序中大量使用异步API,它运行在Tomcat 7上。我有一个要求--允许所有当前正在运行的请求在终止之前完成工作。
我为server.xml
中的每个连接器设置了以下属性:asyncTimeout="40000" executorTerminationTimeoutMillis="60000"
另外,unloadDelay
在context.xml
中设置为60秒。
我已经在我的服务中抛出了10秒的睡眠,我在服务器上放置了一个curl请求,然后立即请求关闭tomcat服务。
curl坐在那里大约10秒,然后从tomcat返回502
。
此外,在catalina.out
中,我看到以下堆栈跟踪:
INFO: Waiting for 1 instance(s) to be deallocated for Servlet [jersey-servlet]
Dec 05, 2018 7:13:37 PM org.apache.catalina.connector.CoyoteAdapter checkRecycled
INFO: Encountered a non-recycled request and recycled it forcedly.
org.apache.catalina.connector.CoyoteAdapter$RecycleRequiredException
at org.apache.catalina.connector.CoyoteAdapter.checkRecycled(CoyoteAdapter.java:634)
at org.apache.coyote.http11.AbstractHttp11Processor.recycle(AbstractHttp11Processor.java:1909)
at org.apache.coyote.http11.Http11NioProtocol$Http11ConnectionHandler.release(Http11NioProtocol.java:220)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:720)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1775)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1734)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:745)
Encountered a non-recycled request and recycled it forcedly.
我相信这表明有些事情没有如预期的那样起作用。HTTP连接器似乎被过早关闭了。
发布于 2019-06-04 10:33:36
https://stackoverflow.com/questions/53639444
复制相似问题