Tomcat версия: 7.0.92
Я интенсивно использую асинхронный API в своем приложении, которое работает на Tomcat 7. Одно из моих требований - разрешить все запросы, которые в данный момент выполняются.завершите свою работу до завершения.
У меня есть следующие свойства, установленные для каждого из моих соединителей в server.xml
:
asyncTimeout="40000"
executorTerminationTimeoutMillis="60000"
Также для unloadDelay
установлено значение 60 секунд в context.xml
.
Я засыпал на 10 секунд в одну из своих служб и помещаю запрос curl на свой сервер, а затем немедленно запрашиваю отключение службы tomcat.
curl сидит тамв течение примерно 10 секунд, а затем возвращает 502
от tomcat.
Кроме того, в 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-коннекторы преждевременно закрываются.