1

我们在 1G RAM 的 linode(Ubuntu 10.04 32 位)上有 5 个应用程序。最近,我们将其中一个应用程序从该 linode 移至另一个 512M。该应用程序基于 Java EE 构建,并且在旧服务器上运行相当稳定。然而,在新服务器上,tomcat(两台服务器上的版本 6)时不时地崩溃,没有任何日志。新服务器上的唯一区别是我们在旧服务器上使用 nginx 作为针对 apache2 的 Web 服务器,而新服务器使用 Ubuntu 12、64 位。没有理由怀疑内存泄漏,因为应用程序在旧服务器上表现良好。是否有任何 tomcat 优化可以防止此类崩溃。我怀疑原因是否也是由于流量引起的负载(因为新服务器的 RAM 较低),因为即使在只有大约 10 个并发用户的半夜,Tomcat仍然崩溃。对这个问题的任何见解将不胜感激。

我检查了 RAM 使用情况,并且 tomcat 不断占用大约 60% 的内存,突然崩溃并变为 0。我使用了一个 bash 脚本,并在新服务器上每 5 分钟将其作为 cron 作业运行一次,以检查是否 tomcat已关闭并自动重新启动。这会导致问题吗?脚本在下面提到

if [ "$(/etc/init.d/tomcat6 status)" == " * Tomcat servlet engine is not running." ]; then /etc/init.d/tomcat6 start; fi

请注意,我不是服务器配置方面的专家。我可以配置一个服务器来安装和运行所需的东西。

4

2 回答 2

0

我将 RAM 升级到 1GB,降级到 Ubuntu 12、32 位,重新安装 JVM 32 位,现在服务器运行起来就像一个魅力。我无法将根本原因归零,但最可能的原因应该是 64 位操作系统或 64 位 JVM 占用了太多内存。谢谢你的帮助。

于 2013-03-26T18:46:08.423 回答
0

您将应用程序从 32 位 Hotspot JVM 移至 64 位 Openjdk JVM。在新服务器上,您的 RAM 更少。

首先我会尝试在新服务器上安装相同的 32 位 Hotspot JVM,看看是否仍然发生崩溃。如果他们这样做,我会开始添加更多内存,并相应地调整 xml 等。

于 2013-03-26T12:17:53.273 回答