当前位置: 首页 > 科技观察

Tomcat应用部署,需要萝卜和坑吗?

时间:2023-03-13 15:42:50 科技观察

读者经常在后台问我问题,一些个性化的问题在后台直接回答。还有一些常见的问题,比如:我的项??目有多个应用,这些应用应该部署在同一个Tomcat中,还是多个应用部署在不同的Tomcat中,每个应用只部署一个好吗?最近在Tomcat的官方“邮件群”看到了类似的问题。也许这个问题不分国界。Tomcat的一些committer也给出了自己的看法,每个人都有不同的看法。下面我们一起来看看,对比一下这两种情况,以及如何使用。首先,让我们自己考虑一下。多个应用部署到一个Tomcat实例上,有什么优缺点?优点:安装管理和监控方便。只需要安装一个Tomcat,所有操作都指向同一个实例。.缺点:多个应用共享Tomcat内存,容易相互影响。如果一个应用程序占用过多的堆,频繁的GC也会导致其他应用程序暂停。为每个Tomcat实例部署一个应用程序怎么样?优点:-多个应用之间Tomcat的内存相互隔离,互不影响。应用崩溃和频繁的GC只会影响它自己,影响范围会缩小。缺点:与实例相比,安装管理和监控比较繁琐。您可以通过安装实例、设置不同的CATALINA_HOME来简化事情。邮件群里的问题描述比上面的更详细。并列出了我认为的优点和缺点。邮件内容很多,我挑选了一些重点段落翻译如下:其中,开发人员和运维人员之间存在意见分歧。运维认为一个Tomcat部署多个应用。原因如下:节省内存(每个Tomcat都会有内存占用,即使没有部署和运行应用程序)节省额外的文件系统(日志,tomcat安装,临时目录)节省nagios监控配置节省大量独立端口(安全considerations)节省了每个必须应用安全补丁的开发人员。据信,Tomcat中应该只部署一个应用程序。原因如下:多个应用部署在一起,启动时间过长。等)如果需要对应用的heap、threaddump、cpuusage等进行在线诊断分析,独立部署不会影响其他应用邮件组的回复。他们中的大多数人更喜欢为每个应用程序部署一个Tomcat:这是概念上最简单的,应用程序不会相互影响。同时,不同的JVM、不同的环境、不同的库可以互不限制地使用,也不需要测试这些应用程序之间的兼容性。如果多个应用部门在一起,如果都占用比较大的内存,比如占用很多Heap,如果赶上一次FullGC,就会造成很长的停顿时间,让多个线程应用程序将受到影响。Tomcat的核心开发者Mark认为这两种情况应该具体情况具体分析。如果你的某个应用程序需要大量的资源,可以尝试将一个应用程序部署到一个Tomcat上来满足企业的要求。否则,多个应用往往会共享同一个Tomcat,便于管理和运维。我个人倾向于在生产环境中独立部署各个应用,独立监控各个应用,相互隔离资源管理。开发时只能架设一个Tomcat实例,将多个应用部署到一个Tomct上会更快。没有那么多个性化需求,也不需要配置一堆端口。当然,如果线上有各种小应用,就没有要求了,一起部署就OK了。综上所述,如果应用在生产中比较小,太麻烦了,问题还可以接受,全部放在一起是没问题的。如果占用资源多,需要稳定性等,尽量独立部署,开发环境越方便越好。