是否有必要在每次重新启动tomcat服务时部署war文件

时间:2018-02-22 08:22:47

标签: java tomcat

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

但是现在机器重启或tomcat服务重启后,Web应用程序无法运行,所以我想知道每次重启机器或tomcat时是否需要重新部署war文件。

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

1 个答案:

答案 0 :(得分:0)

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

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

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

您可能还想查看您的Web应用程序,看看它在启动过程中正在做什么。也许它的工作量超出了必要的范围,或者它可能以低效的方式完成这项工作 1

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

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