2013-03-26 169 views
0

我们在1G RAM的linode(Ubuntu 10.04 32位)上有5个应用程序。最近我们将其中一个应用程序从该linode转移到另一个512M。该应用程序基于Java EE构建,并且在旧服务器上运行得非常稳定。然而,在新的服务器上,tomcat(两台服务器上的版本6)都会偶尔崩溃,而且没有任何日志。新服务器唯一的区别在于,我们使用nginx作为旧服务器上的apache2的Web服务器,而新服务器使用Ubuntu 12,64位。没有理由怀疑内存泄漏,因为应用程序在旧服务器上表现良好。是否有任何tomcat optmizations来防止这种类型的崩溃。我怀疑是否由于流量造成负载的原因(因为新服务器的RAM较低),因为即使在半夜只有大约10个并发用户的情况下,tomcat仍然崩溃。任何有关这个问题的见解将不胜感激。Tomcat6不断崩溃

我检查了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 

请注意,我不是服务器配置的专家。我可以配置一台服务器来安装并获取所需的东西。

+0

JVM是否相同?他们的设置是否为xmx,permgen ...相同? – 2013-03-26 07:40:29

+0

没有...因为新服务器上的内存较小,我已将这些值设置为128m和256m,而旧服务器上的值为256m和512m。 – 2013-03-26 09:10:49

+0

也许linux的OOM杀手会杀死你的tomcat。在发生崩溃时,您应该检查系统日志是否有任何异常主机。另外看看两台机器的jvm版本。 – 2013-03-26 09:26:27

回答

0

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

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

0

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