performance - 64 位操作系统中 Tomcat 的负载平衡

标签 performance tomcat jvm load-balancing

我有一个 Web 应用程序,需要在 Tomcat 中进行负载平衡。 我的硬件规范是 5 个 32 GB RAM 四核处理器 64 位操作系统。

我应该有

  1. 5 台 Tomcat,每台机器一台,-Xmx 大约 30GB 和更高的 maxThreads
  2. 更多具有较低 -Xmx 的 Tomcat,例如25 个 Tomcat,每台机器 5 个,-Xmx 大约 6GB,默认 maxThreads

在 Tomcats 之前,我有使用 mod_proxy_balancer 的负载平衡器。假设数据库层没有瓶颈以简化情况。

如果您需要更多信息,请告诉我。

谢谢。

最佳答案

我看不出每台机器有多个 Tomcat 有什么好处,除非它们碰巧服务于不同的东西,而你想单独关闭它们。或者,如果您预计会发生崩溃并且希望确保至少隔离机器上的某些实例。除此之外,没有明显的好处。当然不是从性能的角度来看,这就是我认为你在问的。

多个 Tomcat 有一个很大的缺点,那就是每个 Tomcat 都有固定的内存量。如果您的应用恰好在短时间内需要大量内存,您将遇到内存不足错误。当您拥有一个大内存空间时,误差范围会更大。

此外,您会发现在实例数量越多的情况下,监控就越麻烦。

如果你有多个 Tomcat,那么它们都必须在不同的端口上运行,或者你必须在每台机器上为它们提供一些东西。无论哪种情况,都会导致不必要的复杂性。

我投票支持每台机器一个 Tomcat。

关于performance - 64 位操作系统中 Tomcat 的负载平衡,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5608974/

相关文章:

java - JVM 中的乌龙是什么?

java - 如何正确设置JAVA_HOME环境变量?

java - 在 Tomcat 6 中使用网络套接字

python - django:这会导致多少查询?

c++11 atomic<int>++ 比 std::mutex protected int++ 慢得多,为什么?

c++ - 查找汉明数 - 不是代码或距离

java - 如何在不使用 HTML 标签的情况下制作漂亮的 jsp GUI?

java - 当上下文路径为 '' 时,application.getContext() 返回 null

java - java中可变参数的最大参数数量是多少?

c# - Windows Azure 表访问花费的时间太长