【问题标题】:Tomcat 9 takes 1 minute to stopTomcat 9 需要 1 分钟才能停止
【发布时间】:2019-06-10 05:35:09
【问题描述】:

我在我的系统上安装了 tomcat 9.0.14(Windows 10、Windows server 2016 R2) 我在启动 tomcat 服务时没有问题(在 2-3 秒内启动)。 但是,停止需要 1 分钟。 我认为我在 webapps 下的一个项目需要时间,所以我删除了所有项目,但结果是一样的。 之后,我将其设置为空 webapps 文件夹空以进一步检查 tomcat 需要 1 分钟才能停止。 我检查了日志文件,它们没有错误。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秒 任何帮助表示赞赏.....

【问题讨论】:

  • 如果您的问题已回答,请将其标记为已回答。

标签: windows tomcat windows-services tomcat9


【解决方案1】:

我很乐意复制这个

  • 下载并解压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:

更正9.0.14中暴露的一个bug,确保Tomcat作为服务运行时及时终止。 (市场)

【讨论】:

  • 感谢 Selaron...您知道他们计划何时发布 9.0.15 吗? 9.0.13版本也一样吗??
  • 据说是“9.0.14 中暴露的错误”,我会考虑任何不受此影响的早期版本。重现的步骤很简单,试试吧。
  • 9.0.15 应该会在 2 月发布。
  • 在 Tomcat 9.0.29 中问题仍然存在,因此如果他们在 9.0.15 中修复它,他们可能会丢失以后版本中的更改
  • 我试过Tomcat 9.0.41,问题依旧。谁能建议我如何解决它?在 tomcat 8 中,我的应用程序仅在 20 秒处停止,但在 tomcat 9 中,相同的应用程序需要 70 秒。
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-13
    • 2020-11-15
    • 1970-01-01
    相关资源
    最近更新 更多