【问题标题】:Tomcat6 constant crashesTomcat6不断崩溃
【发布时间】:2013-03-26 05:15:38
【问题描述】:

我们在 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

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

【问题讨论】:

  • JVM 是否相同?他们的 xmx、permgen... 的设置是一样的吗?
  • 不...因为新服务器上的内存较小,我已将值设置为 128m 和 256m 的一半,而旧服务器上的值为 256m 和 512m。
  • 也许 linux OOM 杀手正在杀死你的 tomcat。您应该在崩溃时检查 syslogs 中是否有任何不寻常的主菜。还要查看两台机器上的 jvm 版本。
  • 我在旧服务器上使用 Ubuntu 10.04,在新服务器上使用 Ubuntu 12 64 位操作系统。这会消耗更多内存吗?
  • 是的,64 位 JVM 的内存开销稍高。你能在两台服务器上运行 java -version 吗?

标签: memory ubuntu memory-management nginx tomcat6


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2012-09-03
      • 2015-08-08
      • 2018-05-24
      • 2013-10-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-04
      • 2015-11-11
      相关资源
      最近更新 更多