2013-09-29 80 views
5

我是GlassFish和一般应用程序服务器的新手。我有一个运行Ubuntu的Amazon EC2实例,并安装了GlassFish 4.它启动时没有问题,但一段时间后GlassFish服务器自行关闭。我已经查看了server.log,但一切看起来很正常,并且没有描述任何故障或关闭的条目。任何可能的原因或我应该寻找什么线索的投入?Glassfish 4服务器意外停止

+0

你有没有找到任何解决方案,我面临完全相同的问题。在亚马逊EC2 linux映像上。 – KarimIhab

+0

@KarimIhab对不起,没有。我担心研究会出现。当我获得时间时,我会继续在这个项目上工作,希望在这个假期(几个星期)。但是,由于您现在正在积极寻找解决方案,如果您发现任何问题,您是否可以介意在评论中发布答案或链接?谢谢。 – Sti

回答

4

我面临着完全相同的情况。我怀疑是因为JVM内存不足,因为免费的EC2实例有一个600 MB的黑客(cat /proc/meminfo进行验证)。为了寻找线索我打开JVM日志记录Glassfish的域名,为了做到这一点,我添加以下行JVM参数<domain>/config/domain.xml

<jvm-options>-XX:LogFile=${com.sun.aas.instanceRoot}/logs/jvm.log</jvm-options> 
<jvm-options>-XX:+LogVMOutput</jvm-options> 

后来,当Glassfish的关闭,jvm.log包含许多类似的消息以下:

<dependency_failed type='unique_concrete_method' ctxk='java/util/ArrayList' x='java/util/ArrayList iterator()Ljava/util/Iterator;' witness='javax/faces/component/UIComponentBase$ChildrenList' stamp='13211.267'/> 
<dependency_failed type='unique_concrete_method' ctxk='java/util/ArrayList' x='java/util/ArrayList iterator()Ljava/util/Iterator;' witness='javax/faces/component/UIComponentBase$ChildrenList' stamp='13211.267'/> 
<dependency_failed type='unique_concrete_method' ctxk='java/util/ArrayList' x='java/util/ArrayList iterator()Ljava/util/Iterator;' witness='javax/faces/component/UIComponentBase$ChildrenList' stamp='13211.267'/> 

我从来没有发现自己真正的意思,但我在这里张贴他们以防有人采取同样的道路为我和网上搜寻他们。

然后终于我看着/var/log/syslog(我发现的那个实际上名为syslog.1),瞧!我得到了JVM进程用完了内存的确认和被杀害:

Dec 20 07:44:44 ip-172-31-33-222 kernel: [1518108.211801] Out of memory: Kill process 22248 (java) score 743 or sacrifice child 
Dec 20 07:44:44 ip-172-31-33-222 kernel: [1518108.211833] Killed process 22248 (java) total-vm:1622220kB, anon-rss:447752kB, file-rss:0kB 

在我看来,增加交换空间应该解决这个问题。事实证明,在EC2交换空间默认情况下是0,所以我分配了1 GB,请参阅How do you add swap to an EC2 instance?

服务器过去常常每天崩溃,但交换它在几周内没有崩溃。

+0

太好了,我会在一两周内测试这个解决方案,并在这里发布结果。 @Hunternif – KarimIhab