jvm如何在tomcat和部署的Java应用程序之间分布



我们部署了Tomcat和两个基于Java的web应用程序。如果其中一个应用程序在同一JVM中运行,我如何在不影响另一个的情况下调整它们的性能?

您的tomcat与您的两个应用程序一起在JVM中运行。所有3个都在同一JVM中运行。因此,如果你调整JVM(比如最大内存使用量),一切都会受到它的影响。据我所知,没有办法表明你希望将更多的资源分配给你的一个应用程序。

这两个web应用程序部署在同一JVM(包括tomcat)中。所以tomcat和两个web应用程序只驻留在一个JVM中。这就是您当前的场景。

另一方面,如果您想单独调整web应用程序,比如在性能等方面,那么最简单的方法就是将它们部署在两个不同的主机/机器上。这样,两个web应用程序将在它们自己的JVM中运行,并且将彼此完全隔离,并且可以独立地进行调优。注意:您需要根据另一个主机和另一个反向代理的需求来考虑这一点。请参阅以下EJP的评论。

如果这是不可能的,那么您可以使用两个不同的JVM,每个JVM都带有一个tomcat和一个web应用程序。通过这种方式,您可以分别调整两个JVM:您可以调整在两个不同JVM中分别运行的tomcat服务器,您可以尝试使用不同的操作系统资源分配来运行它们等等。但这是另一个讨论的主题。如何实现两个不同的JVM分别运行tomcat和一个web应用程序?为了实现这一点,您使用CATALINA_BASE方法,其中两个web应用程序部署到两个不同位置的"webapps"文件夹中。我不会详细介绍这件事,但给你留个链接。注意:在这种情况下,您可能还需要一个反向代理。

使用两种不同的JVM方法(两个不同的java进程),可以分别调整各自的JVM。我更喜欢这种方法,因为这样更容易有单独的东西,比如日志配置,重新启动一个而不影响另一个等等

既然您谈论的是性能,让我顺便提一下,无论您可能采取什么方法,请记住,在某些操作系统中,尤其是linux,您可以将cpu、内存等资源限制或分配给特定进程(在您的情况下是JVM)。您也可以使用Docker这样的容器来做同样的事情。也许你已经意识到了这一点,但我提到这一点是为了完整。

您可以参考:tomcat-CATALINA_BASE和CATALINA_HOME变量

相关内容

最新更新