Tomcat7 не ожидает асинхронных запросов для завершения своей работы при завершении работы - PullRequest
0 голосов
/ 05 декабря 2018

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-коннекторы преждевременно закрываются.

1 Ответ

0 голосов
/ 04 июня 2019

Просто "ради полноты:

согласно этой ошибке Tomcat, представленной автором вопроса - https://bz.apache.org/bugzilla/show_bug.cgi?id=63003

описанная проблема была вызвана не Tomcatсоблюдая настройку контекста unloadDelay, и к настоящему времени уже исправлено.

...