国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

優化 Java 垃圾收集器改進系統性能

2019-11-18 15:29:08
字體:
來源:轉載
供稿:網友

2006 年 11 月 30 日

    在系統的性能測試過程中,當系統的處理能力有某種變化趨勢時, 除了關于等待隊列、執行線程,EJB 池以及數據庫連接池和 Statement Cache 方面的調優外,還要考慮到 java 垃圾收集器(Garbage Collection,本文簡稱 GC)對系統性能的影響。本文介紹了如何分析系統的處理能力和 GC 之間的關系,以及如何通過改進 JVM 的配置來優化 GC,以提高系統的性能。

項目背景

    某個大型項目的 CPU100% 的壓力性能測試, 用以檢查在系統運行環境不正常的情況下,系統可以運行到何種程度。測試過程是: 請求測試的模擬器向系統不斷發出大量請求, 系統接受由模擬器發出的請求,然后將請求置于一個任務池中,假如當前有空閑的線程,則該線程會從任務池中取出一個任務進行處理,假如沒有空閑的線程,則該任務一直會待在任務池中,直到有空閑的線程來處理它。因此,任務池的隊列的長度從某種意義上可以代表整個系統的處理能力,任務池隊列的長度用 Q 值來表示,假如 Q 值超出了一定限額,將會有流量控制的線程將超出限額的待處理任務丟棄,以保證系統的穩定性。

    整個測試要求得到系統所在服務器的負載達到將近 100% 時,系統的吞吐量,相應時間以及在超負荷下業務請求成功率。

問題現象描述

    在測試過程中,任務池中累積的任務數起伏很大,正常時累積的任務數很小,但是每隔一段時間會累積大量的任務。由于累積的任務數超出任務池流量控制所定義的限額,所以每隔一段時間,大量的待處理任務被清除。因此測試結束后得到的在超負荷下業務請求成功率也不是很理想。

應用服務器的物理部署

    一臺AIX服務器(4CPU,4GMemory)來部署本Web應用程序;Web應用程序部署在中間件應用服務器上;部署了一個節點(Node),只配置一個應用服務器實例(Instance),沒有做Cluster部署。

分析

    檢測WebSphere application Server上的Web Container,EJB Container , ORB Service,數據庫連接池等設置均合理,然后懷疑問題的現象是不是與系統GC有關。當前Java Virtual Machine的配置為: Initial Heap Size:256 , Maximum Heap Size: 3072。

    為了驗證任務池中累積的任務數的大幅度變化和系統GC是否存在一定的關系,通過對任務池的累積任務數和系統GC進行采樣, 將采樣后的數據進行分析,用以得出二者的關系。采樣時遵循Nyquist采樣定例: 采樣頻率要大于被采集對象的頻率的2倍。 否則,采樣點很可能每次位于被采集對象的波形的某個點上,從而不能正確反映被采集對象的變化規律。

采樣

    通過觀察,發現任務池的任務數目(以下用Q值代替)的變化周期大概是5到6秒,因此根據Nyquist采樣定例,采樣的時間間隔不能超過2-3秒,所以按照每秒來采樣。 測試時間是3分鐘,采樣180次,系統的當前負載率是99%。采樣圖如下所示:


圖一 任務池Q值的采樣圖
優化 Java 垃圾收集器改進系統性能(圖一)

    由于系流量控制要求的限額是450個任務,也就是任務池中最多能累積450個任務,當任務池中累積的任務數超過450時,多余的任務會被流量控制直接丟棄,從上圖可以看出,系統的Q值在很多時刻都大于450,因此多次被丟棄任務,從而導致了任務請求成功率不高。

 

系統GC的采樣

1: 在WebSphere Administrative Console上, 點擊進入:Servers, 然后Application servers > server1 > PRocess Definition > Java Virtual Machine, 在Configuration面板上,選上Verbose garbage collection選項。


圖二 WebSphere Application Server的JVM配置示圖
優化 Java 垃圾收集器改進系統性能(圖二)

2:進入<%WebSphere Application Server的安裝目錄%>/profiles/<%所在的profiles%>/logs/ <%所在的Server%>, 可以看到native_stderr.log文件,將其清空

3:在高負載的條件下,進行高壓測試3分鐘

4:將native_stderr.log文件拷貝出來,用GCCollector工具進行分析,其中native_stderr.log文件上記錄了系統GC的數據。

5:安裝GCCollector工具: 下載完GCCollector.zip后,解壓縮,將里面Lib里的3個文件 jfreechart-1.0.0-rc1.jar,jcommon-1.0.0-rc1.jar 和GCCollector.jar拷貝至JRE的lib目錄下,然后在命令行控制臺上進入JRE的安裝目錄,而后運行: java -classpath jfreechart-1.0.0-rc1.jar;jcommon-1.0.0-rc1.jar -jar GCCollector.jar。



發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 中卫市| 道真| 浦东新区| 固镇县| 黔西县| 尼木县| 临夏市| 深泽县| 临江市| 乐至县| 莱阳市| 南涧| 花垣县| 如皋市| 格尔木市| 新津县| 柳河县| 德保县| 东辽县| 枞阳县| 清远市| 花莲市| 遵义市| 社会| 阿鲁科尔沁旗| 鹿泉市| 昌吉市| 邯郸市| 丹凤县| 阳江市| 乌审旗| 福贡县| 巨鹿县| 内乡县| 八宿县| 汉中市| 夏河县| 米林县| 奉化市| 南投市| 章丘市|