2011-06-28 25 views
2

今天,我已通過Jenkins CI將應用程序部署到我們的生產應用程序服務器GlassfishV3到autodeploy文件夾。應用程序服務器崩潰了,我無法恢復。java.net.BindException:Glassfish 3.1中的範圍內沒有空閒端口

我的目標是在部署應用程序之前啓動和運行服務器。這是我做了什麼:

  1. 首先查找進程的PID運行在端口4848:nestat -nlept
  2. 然後通過做殺-9 PID
  3. 殺PID刪除WAR文件Jenkinks只是放在autodeploy目錄中,以防萬一,如果這是問題。
  4. 通過執行./asadmin start-domain domain1再次啓動服務器
  5. 服務器需要FOREVER才能啓動!事實上,它永遠不會成功啓動,因爲我無法訪問4848的管理控制檯或任何其他正在運行的應用程序。但是,它留下一個進程運行在4848.
  6. 我看着jvm.log和server.log,我發現一個java.net.BindException:範圍內沒有空閒端口.........

所以我的問題如下:

  1. 你知道是怎麼回事?
  2. 你知道如何解決它嗎?
  3. 你知道一種加速./asadmin start-domain domain1進程的方法嗎?

注意:在我們的QA應用服務器(相同版本,相同操作系統,Same Java,Same Grails)中,它不會發生。真的對這個問題感到沮喪。

非常感謝您的幫助。任何幫助將非常感謝,因爲這是一個生產問題,有幾個應用程序已經停了幾個小時。

  • 達里奧
+0

服務器已經回來了,但我沒有做什麼特別的只是重新啓動服務器。 現在我試圖通過GUI界面部署應用程序,並且出現內存不足錯誤。 如何增加Glassfish3的堆大小? – Viriato

+0

我以前沒有用過glassfish,我正在切換到它。因此,如果您不確定glassfish特定的環境變量,我的猜測是設置JAVA_OPTS。 –

回答

2

我現在可以部署應用程序,基本上它歸結爲提高MaxPermSize參數JVM選項

下的config文件夾,編輯domain.xml中和改變這個默認大小此:

-XX:MaxPermSize參數=256米

您可以隨時增加它。

而且,如果這還不夠,你還可以在同一個文件

-Xmx512m改變最大堆大小。我已經離開了它,但如果需要的話,你可以在64位操作系統上將其改爲6g或更多。在32位操作系統上,它只能識別3.5g。

希望這有助於別人在未來,因爲這個問題使我的工作,直到晚上9:00

UPDATE:

我又有了peformance的問題,我發現喬希的高科技這個其他的解決辦法博客: http://joshitech.blogspot.com/2009/09/glassfish-application-server.html

基本上在domain.xml中添加以下jvm選項。它應該增加Glassfish的啓動和部署性能:

<jvm-options>-server</jvm-options> 
<jvm-options>-Xms3000m</jvm-options> 
<jvm-options>-Xmx3000m</jvm-options> 
<jvm-options>-XX:MaxPermSize=192m</jvm-options> 
<jvm-options>-XX:NewRatio=2</jvm-options> 
<jvm-options>-XX:+AggressiveHeap</jvm-options> 
<jvm-options>-XX:+AggressiveOpts</jvm-options> 
<jvm-options>-XX:+UseParallelGC</jvm-options> 
<jvm-options>-XX:+UseParallelOldGC</jvm-options> 
<jvm-options>-XX:ParallelGCThreads=5</jvm-options>