![部署在同一个 tomcat 7 容器中或不同 tomcat 7 实例中的应用程序之间的 RAM 消耗的理想策略是什么](https://linux22.com/image/625678/%E9%83%A8%E7%BD%B2%E5%9C%A8%E5%90%8C%E4%B8%80%E4%B8%AA%20tomcat%207%20%E5%AE%B9%E5%99%A8%E4%B8%AD%E6%88%96%E4%B8%8D%E5%90%8C%20tomcat%207%20%E5%AE%9E%E4%BE%8B%E4%B8%AD%E7%9A%84%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F%E4%B9%8B%E9%97%B4%E7%9A%84%20RAM%20%E6%B6%88%E8%80%97%E7%9A%84%E7%90%86%E6%83%B3%E7%AD%96%E7%95%A5%E6%98%AF%E4%BB%80%E4%B9%88.png)
我一直在思考如何在 3 个不同的 java webapp 之间管理 RAM。我脑子里的概念有些模糊。Deploy all the web apps in the same tomcat7
例如,3 different instances
我将在 tomcat 7 中分别部署一个 web app。
但最大的问题是如何10GB
在它们之间有效地共享盒子(12GB RAM)?假设我有 3 GB 用于 mysql,所以 app A takes 4GB
、appB 2GB
和C 1GB
。
实现这一目标的已知最佳做法是什么?
答案1
如果还没有,您应该通过负载测试、代码分析、gc 日志记录等方式对您的应用程序进行分析,以查看实际的内存占用情况,并提前解决任何内存泄漏。
话虽如此,我还是会选择三个独立的 Tomcat 实例,每个实例都运行自己的应用程序。这样,您可以为每个 Tomcat 进程/实例设置内存分配(Xms
、Xmx
等)。我认为您不能为每个应用程序设置这些。
为每个应用程序运行单独的 Tomcat 实例的另一个优点是能够单独重新启动每个 Tomcat 实例(如果必须的话),而不会影响其他应用程序的可用性。