首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >多个小实例的tomcat垃圾收集时间比一个大型实例的垃圾收集时间好吗?

多个小实例的tomcat垃圾收集时间比一个大型实例的垃圾收集时间好吗?
EN

Stack Overflow用户
提问于 2015-04-11 18:31:54
回答 1查看 361关注 0票数 0

现在,我们在服务器上有一个Tomcat实例,为它分配了大约55 to的内存。我们还在运行G1垃圾收集器。

我们在tomcat服务器上运行了许多主机,每个主机本身并没有很多通信量,但是它们加在一起就产生了相当大的流量。G1垃圾收集器每30秒左右调用一个混合GC,大约2秒(这就是我们配置的最大暂停时间,我们知道这太高了,并计划调整它)。

我的问题是,如果我将这些主机划分为同一台机器上的4x14gigtomcat实例,或者说,7x8gig实例将有助于提高垃圾收集的效率,并消除暂停或G1经常混合GC的需要。

总之,我的垃圾收集在许多小堆上比在一个大堆上更有效吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-04-11 19:03:31

很难对此给出“是”/“否”的回答:)

将应用程序拆分到tomcat的多个实例将使它们更易于维护。

Cons :-

  1. 配置堆大小--您可能需要手动为每个tomcat实例配置堆大小,这需要进行一些测试来确定每个tomcat实例的大小,但是您可以按照当前的假设,根据应用程序的流量对其进行分类,并相应地分配内存。例如,流量最大的应用程序可能运行在自己的tomcat实例中,其固定堆大小为2GB。
  2. 路由URL--现在将应用程序划分为多个tomcat实例,很少有URL必须被路由到一个监听不同端口的tomcat实例,而这个端口并不像以前那样发出,因为所有请求总是在一个tomcat实例上结束。

Pros :-

  1. 减少了GC的次数--大量的流量会导致更多的工作,并且很可能会增加您的对象分配率,所以如果您在一个单独的tomcat实例中运行该应用程序,那么在一个应用程序中的GC不会影响所有其他应用程序,因为它们有它们自己的实例。与单个55G堆相比,您的堆将相对较小,GC时间将大大减少。
  2. 减少了内存占用()--现在您正在拆分实例,您的单个tomcat堆大小可能降至32 of以下,这将使您能够利用压缩Oops,这可能会减少应用程序的内存占用。
  3. 高可用性-假设您经常访问的应用程序由于意外的流量而遇到OutOfMemoryException,所有其他应用程序仍在运行,您只需要重新启动/分析一个应用程序的堆转储,这比分析55gig堆容易得多:)

因此,很明显,它有几个优点,但是您应该谨慎地这样做:)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29581557

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档