2012-10-22 60 views
3

我在安裝JRockit時使用了weblogic 10.3.6。我使用Linux作爲操作系統的64位系統。我有一個adf應用程序安裝在它。只有幾個用戶在使用該應用程序。但是安裝WLS的服務器機器每週都會停機,導致內存不足。所以我們必須每週重新啓動一次。當我瀏覽時,我發現通過調整堆大小和其他內存參數可以使WebLogic更穩定。weblogic服務器11g內存不足問題

例子:--Xms256m --Xmx512m MaxPermSize參數爲128米

我的問題是

  1. 這些是什麼參數?

  2. 這些爭論是如何相互關聯的?

  3. 如何確定這些參數的值?

  4. 什麼可以是其他原因內存不足的問題?

感謝,

拉克什

回答

3

獲取JVM parameters的基本知識。

只需將幾個JVM內存參數設置爲更高的值,將無濟於事,只會將錯誤轉移到未來。您必須分析應用程序才能找出真正的問題。 JRockit附帶一個非常好的內存分析工具Mission Control。觀看demo,這將有助於找出應用程序的哪一部分導致內存不足錯誤。

+0

感謝您的回覆,我試圖將任務控制連接到遠程服務器,但提供Xmanagement後無法連接evemn:ssl = false,authenticate = false,port = 7099 Djava.rmi.server.hostname = hostAddress(where weblogic位於)。任何想法? – Sam

4

Xms和Xmx是Java程序可以使用的最小和最大堆(實質上存儲對象的位置)大小。

在你的情況下,java程序是部署應用程序的WebLogic服務器。默認情況下,WebLogic服務器設置的Xms和Xmx值爲:256m和512m。

看起來您的應用程序需要超過512MB的堆內存。因此,您需要增加最大堆大小(Xmx)以避免頻繁出現OutOfMemory錯誤。

Xmx的新值可以是1024m或更多。您(或性能團隊,如果有的話)必須對您的應用程序和不同的Xmx值進行嚴格的性能,可伸縮性和可靠性測試,以確定哪些應用程序最適合。

可以在腳本級別(如果使用startWebLogic.sh/startManagedWebLogic.sh腳本啓動服務器)設置內存參數(即Xms,Xmx)。

Script級別的變化:

  • 打開setDomainEnv.sh和搜索「IF USER_MEM_ARGS環境變量設置」,然後在下一行插入USER_MEM_ARGS="-Xms256m -Xmx1024m"
  • 您甚至可以從服務器更改此設置到服務器通過使用保存正在啓動的服務器的變量SERVER_NAME。比如有隻對非管理員服務器此設置,插入[ "${SERVER_NAME}" != "AdminServer" ] && USER_MEM_ARGS="-Xms256m -Xmx1024m"

控制檯的變化(除非你使用管理控制檯啓動管理服務器):

  • 登錄AdminConsole-> Environments- >服務器 - > - >配置 - > ServerStart->參數:(文本區)。
  • 請輸入:-Xms256m -Xmx1024m並保存。

哦,順便說一句JRockit does not有任何PermSize的概念。

+0

感謝回覆回覆有幫助。那麼現在我該如何確定內存泄漏的發生地點以及爲什麼?如何從遠程服務器獲取java dumb和垃圾收集日誌? – Sam

+0

我也會建議[JRockit Mission Control](http://docs.oracle.com/cd/E13150_01/jrockit_jvm/jrockit/tools/index.html)。如果您在使用該工具時遇到問題,請選擇一個作爲答案來關閉此問題,並使用任務工具問題打開一個新帖子,其中包含所有錯誤詳細信息。 – Mani