【问题标题】:Is it necessary to deploy the war files every time the tomcat service is restarted每次重启tomcat服务是否需要部署war文件
【发布时间】:2018-02-22 08:22:46
【问题描述】:

我有几个 war 文件已部署并且 Web 应用程序工作正常,但每次重新启动 tomcat 服务或系统时,war 文件都会重新部署并停止重新部署,我设置了配置选项 deployOnStartup 和 autoDeploy在 server.xml 中设置为 false。

但是现在机器重启或者tomcat服务重启后,web应用都不能用了,所以不知道是不是每次重启机器或者tomcat都需要重新部署war文件。

我遇到的原始问题是,当tomcat在启动时部署war文件并重新启动时,它会消耗高达95%的CPU并且其他进程被占用,所以为了解决它我试图关闭自动部署但是如果自动启动已关闭,Web 应用程序无法正常工作。所以我需要知道是否有任何方法可以限制tomcat的CPU使用率。

【问题讨论】:

  • 所以你告诉tomcat不要在启动时重新部署应用程序。现在您想知道为什么它不部署它们。有什么遗漏吗?如果您最初想知道为什么tomcat“每次重启后都在部署”,那很正常,它只是在运行的服务器实例中启动应用程序的过程。
  • 何不尝试重新设置配置选项,看看重启后web应用是否开始工作,然后想想 .
  • @chrylis 我认为如果您查看启动时的日志(相对于重新启动),您会发现无论战争中的时间戳是什么,您都会看到正在部署的 {war/app name}.war 以及它在此活动上取得的进展。每次启动tomcat时它都在那里。除非你告诉它不要这样做。
  • @Ernest Kiwele- deployOnStartup 和 autoDeploy 一开始是真的,所以部署了war文件,之后我手动编辑了服务器。 xml 并将这两个标志设置为 false。所以我认为 web 应用程序应该在重启后工作,因为 war 文件已经部署。
  • @Elliott Frisch,我已经尝试将配置选项恢复为true并重新启动tomcat。war文件已重新部署并且Web应用程序开始工作。所以我想知道是否每次都必须重新部署war文件机器/tomcat 重新启动。

标签: java tomcat


【解决方案1】:

这就是 servlet 容器的工作方式:您不能有一个未部署的应用程序在客户端发出请求时被调用。在这种情况下,“部署”实际上意味着“开始”。没有单独的“部署”步骤,只需执行一次即可使应用程序通过容器可用。通常,启动时部署正是您希望发生的事情。

如果您遇到问题是因为您的应用程序在启动时占用了所有系统资源,那么我认为您需要花一些时间重新评估您的容量计划。您说的是“保留了其他应用程序”......大概您的意思是,在部署您的 Web 应用程序时,同一服务器上的其他应用程序没有响应。这是因为 Web 应用程序正在执行的所有活动。

嗯...如果您需要同时使用非 Web 应用程序和 Web 应用程序,那么看起来您将需要第二台服务器(或第三台等) .

您可能还想查看您的 Web 应用程序,看看它在启动期间做了什么。也许它做的工作超出了必要,或者它的工作效率低下1

最终,这将归结为您需要哪些可用的服务以及可用的硬件。如果服务不能满足您的需求(例如可用性),那么您需要更改其中一个参数(例如更多硬件),直到服务再次满足您的需求。或者,您需要调整您的期望(抱歉……某些服务只需要在网络应用启动时等待)。

1 作为一名顾问,我曾经遇到过一个可能需要 5 分钟才能启动的 Web 应用程序,而在我们的开发工作中,我已经厌倦了等待它。所以,我检查了发生了什么,应用程序正在构建整个关系数据库表和字段结构的内存表示。他们这样做的方式非常低效,经过几个小时的重构,我将启动时间从大约 5 分钟缩短到了大约 30 秒。有时,只有更好的方式来做事。

【讨论】:

    猜你喜欢
    • 2017-04-03
    • 1970-01-01
    • 2012-10-29
    • 2018-07-25
    • 1970-01-01
    • 2012-08-10
    • 1970-01-01
    • 2015-12-10
    • 2018-10-24
    相关资源
    最近更新 更多