JBoss記憶體最佳化

來源:互聯網
上載者:User


昨天查了一天的資料,運氣不錯,收穫不小,解決了一個老大難問題:JBoss記憶體緊張的問題。這是一個困擾了我兩年整的問題,就是從前年這個時候,用JBoss 3.2.1架站以來,始終是一個大問題。不大的網站,1G的記憶體都不夠用,經常要消耗500Mb的交換記憶體(swap)。

    原來是自己犯了非常低級的錯誤,不懂JAVA_OPTS各參數的含義造成的。之前的JAVA_OPTS是 -Xms 520m -Xmx 1220m -Xss 15120k +XX:AggressiveHeap,這個JAVA_OPTS犯了2個致命的錯誤:

    1. +XX:AggressiveHeap會使得 Xms 1220m沒有意義。這個參數讓jvm忽略Xmx參數,瘋狂地吃完一個G實體記憶體,再吃盡一個G的swap。
    另外Xmx作為允許jvm使用的最大記憶體數量,不應該超過實體記憶體的90%。而之所以使用了這個參數,是因為不加的話,JBoss會在運行一天左右的時間後迅速崩潰,上機課是,甚至出現過半個小時就崩潰的情況。

    之所以要用這個參數,用swap支援伺服器運行,是因為犯了下面的錯誤:

    2. -Xss 15120k

    這使得JBoss每增加一個線程(thread)就會立即消耗15M記憶體,而最佳值應該是128K,預設值好像是512k.

    這就是JBoss剛啟動時,還有200Mb記憶體富餘,但會在一個小時內迅速用完,因為伺服器的threads在迅速增加。前3天,每天都多吃80Mb左右的swap.在第四天開始穩定下來。今年春節在外度假,觀察到了這個現象,卻不理解其原因:伺服器線上程到達100之後,一般不再增加新的線程,新增加的在用完之後,會被迅速destroy,1.25-2.10所使用的線程基本是1.21- 1.23建立的,因此沒有再消耗新的記憶體。伺服器持續已耗用時間,也因此大大超乎我5天的預期,到達了20天。

    昨天所作的修改:

    1.修改JAVA_OPTS,去掉+XX:AggressiveHeap,修改Xss。現在的JAVA_OPTS為:-Xms 520m -Xmx 900m -Xss 128k
    2.修改deploy/jbossweb-tomcat55.sar/service.xml,將maxThreads根據目前的訪問量由預設的250降為75,並使用jboss 4預設未寫在標準service.xml裡面而jboss 3寫入了的2個參數: maxSparseThreads=55,minSparseThreads=25
    3.修改了oracle-ds.xml將最大串連數有150降為50.
    4.去掉了一些不用的服務。




聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.