许多小实例的 tomcat 垃圾回收时间是否比 1 个大实例的垃圾回收时间更好?
Is garbage collection times on tomcat better with many small instances than on 1 large instance?
现在我们的服务器上有一个 Tomcat 实例,分配了大约 55 GB 的内存。我们也是 运行 G1 垃圾收集器。
我们在tomcat服务器上有运行多台主机,每台主机本身的流量不多,但加起来流量不小。 G1 垃圾收集器最终每 30 秒左右调用一次混合 GC,持续大约 2 秒(这是我们配置的最大暂停时间,我们知道它太高并计划对其进行调整)。
我的问题是,如果我在同一台机器上将这些主机拆分为 4 x 14 gig tomcat 个实例,或者说,7 x 8 gig 实例是否有助于提高垃圾收集效率和消除暂停或 G1 经常混合 GC 的需要。
总而言之,我的垃圾回收在许多小堆上是否比在一个大堆上更有效?
好吧,很难给出 Yes/No 的答案:)
将您的应用程序拆分到 tomcat 的多个实例将使它们更易于维护。
缺点:-
- 配置堆大小 - 您可能需要为每个 tomcat 手动配置堆大小
实例,需要一些测试来确定每个实例的大小
tomcat 实例,但您可以按照当前的假设进行
根据流量对应用程序进行分类并分配
相应地记忆。例如,您的应用程序具有最高
比其他应用大得多的流量可能 运行正在进入
它自己的 tomcat 实例,它自己的固定堆大小为 2GB。
- 路由 URL - 现在您正在将应用程序划分为
多个 tomcat 实例,很少有 URL 必须路由到 tomcat
在另一个端口上侦听的实例,这个端口不像之前那样有问题
所有请求总是以单个 tomcat 实例结束。
优点:-
- 减少 GC 时间 - 繁忙的流量会导致更多的工作并且很可能会增加您的对象分配率,因此如果您 运行 该应用程序在一个单独的
tomcat 例如,一个应用程序中的 GC 不会影响所有其他应用程序,因为它们
有自己的实例。与单个 55gig 堆相比,您的堆将相对较小,并且 GC 时间将大大减少。
- 减少占用空间 - 现在您正在拆分实例,您的个人 tomcat
堆大小可能会降至 32GB 以下,这将使您能够利用
压缩的 Oops 可能会减少你的内存占用
应用程序。
- 高可用性 - 假设您经常访问的应用程序遇到
OutOfMemoryException
因为意外流量,其他都
应用程序仍在 运行ning,你只需要 restart/analyze
只有一个应用程序的堆转储,这使事情比
分析 55 gig 堆 :)
所以很明显它有几个优点,但你应该谨慎使用:)
现在我们的服务器上有一个 Tomcat 实例,分配了大约 55 GB 的内存。我们也是 运行 G1 垃圾收集器。
我们在tomcat服务器上有运行多台主机,每台主机本身的流量不多,但加起来流量不小。 G1 垃圾收集器最终每 30 秒左右调用一次混合 GC,持续大约 2 秒(这是我们配置的最大暂停时间,我们知道它太高并计划对其进行调整)。
我的问题是,如果我在同一台机器上将这些主机拆分为 4 x 14 gig tomcat 个实例,或者说,7 x 8 gig 实例是否有助于提高垃圾收集效率和消除暂停或 G1 经常混合 GC 的需要。
总而言之,我的垃圾回收在许多小堆上是否比在一个大堆上更有效?
好吧,很难给出 Yes/No 的答案:)
将您的应用程序拆分到 tomcat 的多个实例将使它们更易于维护。
缺点:-
- 配置堆大小 - 您可能需要为每个 tomcat 手动配置堆大小 实例,需要一些测试来确定每个实例的大小 tomcat 实例,但您可以按照当前的假设进行 根据流量对应用程序进行分类并分配 相应地记忆。例如,您的应用程序具有最高 比其他应用大得多的流量可能 运行正在进入 它自己的 tomcat 实例,它自己的固定堆大小为 2GB。
- 路由 URL - 现在您正在将应用程序划分为 多个 tomcat 实例,很少有 URL 必须路由到 tomcat 在另一个端口上侦听的实例,这个端口不像之前那样有问题 所有请求总是以单个 tomcat 实例结束。
优点:-
- 减少 GC 时间 - 繁忙的流量会导致更多的工作并且很可能会增加您的对象分配率,因此如果您 运行 该应用程序在一个单独的 tomcat 例如,一个应用程序中的 GC 不会影响所有其他应用程序,因为它们 有自己的实例。与单个 55gig 堆相比,您的堆将相对较小,并且 GC 时间将大大减少。
- 减少占用空间 - 现在您正在拆分实例,您的个人 tomcat 堆大小可能会降至 32GB 以下,这将使您能够利用 压缩的 Oops 可能会减少你的内存占用 应用程序。
- 高可用性 - 假设您经常访问的应用程序遇到
OutOfMemoryException
因为意外流量,其他都 应用程序仍在 运行ning,你只需要 restart/analyze 只有一个应用程序的堆转储,这使事情比 分析 55 gig 堆 :)
所以很明显它有几个优点,但你应该谨慎使用:)