Tomcat 9 需要 1 分钟才能停止

Tomcat 9 takes 1 minute to stop

我在我的系统上安装了 tomcat 9.0.14(Windows 10,Windows 服务器 2016 R2) 我在启动 tomcat 服务时没有问题(在 2-3 秒内启动)。 但是,需要 1 分钟才能停止。 我认为我驻留在 webapps 下的项目之一需要时间,所以我删除了我的所有项目,但结果是一样的。 之后我将它设为空的 webapps 文件夹以进一步检查 tomcat 花了 1 分钟才停止。 我检查了日志文件,他们没有 errors.Tomcat 在停止时空闲 1 分钟。

Common-deamon.log-------

[2019-01-08 16:30:02] [info]  [13948] Stopping service... 
[2019-01-08 16:30:03] [info]  [13948] Service stop thread completed.
[2019-01-08 16:31:03] [info]  [ 1940] Run service finished.
[2019-01-08 16:31:03] [info]  [ 1940] Commons Daemon procrun finished 

catalina.log--------

08-Jan-2019 16:30:02.399 INFO [Thread-6] org.apache.coyote.AbstractProtocol.pause Pausing ProtocolHandler ["http-nio-8080"]
08-Jan-2019 16:30:02.431 INFO [Thread-6] org.apache.coyote.AbstractProtocol.pause Pausing ProtocolHandler ["ajp-nio-8009"]
08-Jan-2019 16:30:02.453 INFO [Thread-6] org.apache.catalina.core.StandardService.stopInternal Stopping service [Catalina]
08-Jan-2019 16:30:02.453 INFO [Thread-6] org.apache.coyote.AbstractProtocol.stop Stopping ProtocolHandler ["http-nio-8080"]
08-Jan-2019 16:30:02.453 INFO [Thread-6] org.apache.coyote.AbstractProtocol.stop Stopping ProtocolHandler ["ajp-nio-8009"]

他们有什么办法可以减少 tomcat 9 的浸泡时间。 在 tomcat 8 中,停止时间为 3-5 秒 任何帮助表示赞赏.....

我很高兴能通过

重现这个
  • 正在下载并解压apache-tomcat-9.0.14-windows-x64.zip
  • cd 到 apache-tomcat/bin
  • service.bat install
  • 启动该服务很快,停止它恰好延迟 60 秒。

这似乎是 Tomcat 的一个问题,但当前的 developer snapchot (trunk) changelog 表明它已经针对尚未发布的 Tomcat 9.0.15+ 进行了修复,但没有分配明确的错误报告:

Tomcat 9.0.15 (markt) 开发中 / Catalina:

Correct a bug exposed in 9.0.14 and ensure that the Tomcat terminates in a timely manner when running as a service. (markt)

我们在 Tomcat v9.0.26 中遇到了同样的问题。 Tomcat 在您终止服务器后刚好用了 60 秒才完成。我们努力关闭应用程序中的所有内容,最后我们意识到我们有一个 ThreadPoolExecutor 创建了一个 newCachedThreadPool() 并且这个缓存池的 “keepAliveTime” 为 60 秒 .

因此,在终止 tomcat 之后,线程池等待 60 秒来检查是否仍需要重新使用线程。只有在这个时候它才真正关闭。所以解决方案是在我们关闭应用程序后关闭缓存的线程池。