2013-09-29 122 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