1 个具有 50GB Ram 的 Tomcat 还是 20 个具有 2.5GB Ram 的 Tomcat?

1 个具有 50GB Ram 的 Tomcat 还是 20 个具有 2.5GB Ram 的 Tomcat?

我的客户有一个具有 64GB 内存的 Windows 2008 网络服务器。

我必须将我公司的系统(运行在 Java 上)部署到服务器上并连接到他们现有的 Itanium 数据库。

分配这么大的内存是有原因的,因为我们的系统使用大量内存来将信息写入数据库,但数据仍保留在内存中以便快速访问。类似于 EHCache 的产品。

过去的经验引发了一个担忧:

“为了使 Java 高效运行,每个 Java 实例应保持大约 2GB 的空间,否则 Java 垃圾收集器活动将缩短响应时间”

对于最新的 JDK 1.6,上述担忧是否仍然存在?或者是否仍然适用?

当我使用 JDK 1.4 时,我通过部署一些内存不超过 2GB 的 Web 服务器来缓解 Java 内存大小限制。

我应该只运行一台大型服务器还是运行多台每台有约 2GB 或可用 RAM 的服务器?

答案1

我建议将两种选择混合使用。想象一下重新启动 fat tomcat,当它恢复时会产生一些停机时间和缓慢。

我建议您将稳定的应用程序放在一个具有更多内存的 tomcat 中,将需要更多关注/频繁更改的另一个 tomcat 分开。

换句话说,该方法应该由稳定性/服务质量驱动,而不是由商品驱动(想象一下重新启动 20 个 tomcat)。

相关内容