周游世界

          喂馬, 劈柴, 周游世界

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            28 隨筆 :: 0 文章 :: 4 評論 :: 0 Trackbacks
          昨天查了一天的資料,運氣不錯,收獲不小,解決了一個老大難問題: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.去掉了一些不用的服務。
          posted on 2006-09-13 15:16 周游世界 閱讀(3438) 評論(0)  編輯  收藏 所屬分類: JBoss
          主站蜘蛛池模板: 司法| 鹰潭市| 马鞍山市| 信宜市| 安溪县| 阜康市| 扶沟县| 原平市| 合肥市| 陆良县| 昌都县| 体育| 晋城| 临汾市| 阿拉善左旗| 贡嘎县| 陇西县| 黔东| 仲巴县| 西林县| 仙居县| 集贤县| 广河县| 天全县| 海林市| 铜川市| 边坝县| 灵璧县| 东乌| 北流市| 临西县| 安龙县| 敦化市| 吉隆县| 富锦市| 宁阳县| 大新县| 桂平市| 绵竹市| 金川县| 普安县|