隨筆-193  評論-715  文章-1  trackbacks-0

          本Blog所有內(nèi)容不得隨意轉(zhuǎn)載,版權(quán)屬于作者所有。如需轉(zhuǎn)載請與作者聯(lián)系( fastzch@163.com )。
          未經(jīng)許可的轉(zhuǎn)載,本人保留一切法律權(quán)益。
          一直以來,發(fā)現(xiàn)有某些人完全不尊重我的勞動成果,隨意轉(zhuǎn)載,提醒一下那些人小心哪天惹上官司。

          一、關(guān)于各工具的使用,我簡單的整理總結(jié)了一下,列表如下:
          ga(IBM Pattern Modeling and Analysis Tool for Java Garbage Collector)??
          ?分析WAS產(chǎn)生的GC Log的工具
          ?
          jca(IBM Thread and Monitor Dump Analyzer for Java)
          ?分析WAS OOM時產(chǎn)生的(文件名以javacore開頭,后綴名為.txt
          ??例:javacore.20080731.200248.2324.txt)

          ha(IBM HeapAnalyzer)
          ?分析WAS產(chǎn)生的Java Heap Dump的文件(文件后綴名為.phd)


          二、關(guān)于在Windows上生成WebSphere的java heap dump 和 java core dump的操作,可以參考我的另一篇文章:
          [轉(zhuǎn)載]如何在Windows 平臺獲得WASv5.x/6.x的 Java HeapDump和JavaCore 診斷文件?

          三、相關(guān)參考資料:
          以下內(nèi)容來自于WebSphere 的Info Center:?

          以手動方式生成堆轉(zhuǎn)儲

          使用此任務(wù)來手動生成堆轉(zhuǎn)儲。如果使用的 Sun Java 虛擬機(JVM)包含在 HP-UX 和 Solaris 操作系統(tǒng)上運行的 WebSphere Application Server,那么不支持此功能。

          在您開始之前

          [Windows] [AIX] [Linux] 雖然只有在檢測到內(nèi)存泄漏時才會生成堆轉(zhuǎn)儲,但是,您必須知道,生成堆轉(zhuǎn)儲時會嚴(yán)重影響 WebSphere Application Server 的性能,并且時間長達數(shù)分鐘。因此,在以手動方式生成多個堆轉(zhuǎn)儲以便進行內(nèi)存泄漏分析時,請確保泄漏的對象達到相當(dāng)數(shù)目后才創(chuàng)建另一個堆轉(zhuǎn)儲。這樣,問題確定工具就能夠確定內(nèi)存泄漏的根源。

          關(guān)于本任務(wù)

          您可能想以手動方式生成堆轉(zhuǎn)儲,以便對內(nèi)存泄漏進行分析。在 WebSphere Application Server 中的 Java 虛擬機(JVM)上,無法自動生成堆轉(zhuǎn)儲。由于生成堆轉(zhuǎn)儲的成本相當(dāng)高,因此,您可能想指定堆轉(zhuǎn)儲的生成時間。在 WebSphere Application Server 中的 JVM 上,可以通過對 WebSphere Application Server 受管 Bean(MBean,這些是特殊的 Java bean)執(zhí)行 generateHeapDump 操作來以手動方式生成堆轉(zhuǎn)儲。

          WebSphere Application Server wsadmin 工具提供運行腳本的能力。您可以使用 wsadmin 工具來管理 WebSphere Application Server 安裝版本以及配置、應(yīng)用程序部署和服務(wù)器運行時操作。WebSphere Application Server 僅支持 Jacl 和 Jython 腳本語言。有關(guān) wsadmin 工具的更多信息,請參閱啟動 wsadmin 腳本客戶機主題。

          過程

          1. 啟動 wsadmin 腳本客戶機。 要運行腳本命令,您有多個選項,這些選項包括以交互方式運行腳本命令以及在概要文件中運行腳本命令。
          2. 例如,對 JVM MBean 調(diào)用 generateHeapDump 操作
            • 查找 JVM objectName:
              <wsadmin> set objectName [$AdminControl queryNames 
              WebSphere:type=JVM,process=<servername>,node=<nodename>,*]  
            • 對 JVM MBean 調(diào)用 generateHeapDump 操作:
              <wsadmin> $AdminControl invoke $objectName generateHeapDump
              其中:
              $是使用其值替換變量名的 Jacl 運算符
              invoke是命令
              generateHeapDump 是要調(diào)用的操作
              <servername>是服務(wù)器的名稱,將在該服務(wù)器上生成堆轉(zhuǎn)儲
              <nodename><servername> 所屬的節(jié)點

          下一步做什么?

          運行 wsadmin 命令后,將返回堆轉(zhuǎn)儲的文件名。有關(guān)查找堆轉(zhuǎn)儲的更多信息,請參閱查找和分析堆轉(zhuǎn)儲主題。在創(chuàng)建了一兩個堆轉(zhuǎn)儲之后,可使用許多內(nèi)存泄漏問題確定工具來分析問題。Memory Dump Diagnostic for Java? i 是一個脫機工具,此工具可用于診斷造成 Java 堆內(nèi)存泄漏的根本原因。請參閱診斷內(nèi)存不足錯誤和 Java 堆內(nèi)存泄漏,以了解更多信息。


          相關(guān)任務(wù)
          相關(guān)信息
          診斷內(nèi)存不足錯誤和 Java 堆內(nèi)存泄漏





          診斷內(nèi)存不足錯誤和 Java 堆內(nèi)存泄漏

          用于 Java? 的內(nèi)存轉(zhuǎn)儲診斷是一個脫機工具,用于診斷 Java 堆中內(nèi)存泄漏背后的根本原因。此工具分析內(nèi)存轉(zhuǎn)儲(堆轉(zhuǎn)儲)的公共格式,該轉(zhuǎn)儲來自運行了 WebSphere? Application Server 的 Java 虛擬機(JVM)。內(nèi)存轉(zhuǎn)儲的分析用于識別可能是內(nèi)存泄漏根本原因的 Java 堆中的數(shù)據(jù)結(jié)構(gòu)。此分析也識別主要組成應(yīng)用程序的 Java 堆占用量的匯總對象組。此工具能夠分析出現(xiàn)內(nèi)存不足問題的生產(chǎn)環(huán)境應(yīng)用程序服務(wù)器中非常巨大的內(nèi)存轉(zhuǎn)儲。

          在您開始之前

          此工具使用從 WebSphere Application Server 產(chǎn)生的內(nèi)存轉(zhuǎn)儲,而不是從用于 Java 的內(nèi)存轉(zhuǎn)儲診斷工具產(chǎn)生的內(nèi)存轉(zhuǎn)儲。支持下列轉(zhuǎn)儲格式:
          • [AIX][Linux][Windows] IBM? 可移植堆轉(zhuǎn)儲(.phd),用于大多數(shù)平臺上的 WebSphere Application Server V5.1.x 和更高版本
          • [AIX][Linux][Windows] IBM 文本,用于大多數(shù)平臺上的 WebSphere Application Server V4.x 和 V5.0.x
          • [HP-UX][Solaris] HPROF,用于 HP-UX 和 Solaris 平臺上的 WebSphere Application Server 安裝

          關(guān)于本任務(wù)

          當(dāng)對象引用在它們不再需要后無意保留時,內(nèi)存泄漏可能在 Java 應(yīng)用程序中發(fā)生。即使 Java 語言有內(nèi)建的垃圾回收機制來幫助程序員顯式釋放對象,這個問題也會阻止 Java 垃圾回收進程釋放內(nèi)存。由于 Java 堆中大量的對象以及這些對象之間的復(fù)雜關(guān)系,因此很難在大型的復(fù)雜 Java 應(yīng)用程序中診斷內(nèi)存泄漏。

          存在兩種類型的分析機制:單一轉(zhuǎn)儲分析和兩個轉(zhuǎn)儲的比較分析。此工具列示可疑的數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)類型,并在一個基于瀏覽器的交互式 Web 應(yīng)用程序中顯示內(nèi)存轉(zhuǎn)儲的內(nèi)容。該工具在具有相似所有權(quán)結(jié)構(gòu)的數(shù)據(jù)類型有效集圖形布局中顯示占用量分析結(jié)果。此工具將內(nèi)存轉(zhuǎn)儲的內(nèi)容顯示在用于瀏覽的交互式樹形視圖中,以及分別顯示在對象和數(shù)據(jù)類型的兩個表視圖中。樹形視圖允許您查找每個對象的所有入局和出局引用,以及查看每個具有可疑內(nèi)存泄漏的數(shù)據(jù)結(jié)構(gòu)中的容器對象位置。

          以脫機方式分析內(nèi)存轉(zhuǎn)儲為識別內(nèi)存泄漏背后的根本原因提供了低開銷的機制。此機制特別適合于在生產(chǎn)中或在壓力測試環(huán)境中運行的大型應(yīng)用程序,在這些地方經(jīng)常首先檢測到內(nèi)存泄漏。

          過程

          1. 在某一與要分析的應(yīng)用程序服務(wù)器安裝不同的計算機上安裝 IBM Support Assistant。 使用一臺具有至少 5 千兆字節(jié)(GB)可用磁盤空間、至少 1.5 GB RAM 以及一個頻率為 2 GHz 或更快的 Intel? 處理器的非生產(chǎn)計算機,最好是在 Linux? 平臺上。
          2. 在要分析的應(yīng)用程序服務(wù)器安裝上啟用詳細垃圾回收。

            詳細垃圾回收信息幫助從分段存儲或本機內(nèi)存泄漏中排除基本配置問題和內(nèi)存泄漏問題。有關(guān)如何在 IBM 平臺上啟用詳細垃圾回收的更多信息,請參閱 IBM developer kits: Diagnosis documentation

          3. 可選: 在 WebSphere Application Server 中啟用輕量級內(nèi)存泄漏檢測。

            啟用輕量級內(nèi)存泄漏檢測可以幫助早期檢測異常的內(nèi)存使用行為以及自動觸發(fā)堆轉(zhuǎn)儲。

          4. 為 WebSphere Application Server 啟用 JVM 堆轉(zhuǎn)儲。

            從 IBM Support Assistant 啟動時,請參閱工具提供的文檔。

          5. 當(dāng)堆轉(zhuǎn)儲可用時,運行用于 Java 的內(nèi)存轉(zhuǎn)儲診斷工具。
            1. 啟動 IBM Support Assistant
            2. 在 IBM Support Assistant 中,選擇工具選項卡。
            3. 在左邊,單擊 WebSphere 6.1
            4. 在右邊,單擊用于 Java 的內(nèi)存轉(zhuǎn)儲診斷

          結(jié)果

          這樣就識別出內(nèi)存泄漏的可能根本原因。

          Java 堆中的內(nèi)存泄漏在日志文件中產(chǎn)生了 java.lang.OutOfMemoryError 異常。但是,不是所有的內(nèi)存不足錯誤是由 Java 堆內(nèi)存泄漏導(dǎo)致的。內(nèi)存不足錯誤也可能由下列情形造成:
          • Java 堆分段存儲。在沒有連續(xù)的大塊可用 Java 堆空間可用來分配 Java 對象時,此分段存儲發(fā)生。此問題存在不同的原因,包括存在鎖住對象,或者因為出現(xiàn)重復(fù)的大對象分配。
          • 本機堆中的內(nèi)存泄漏。當(dāng)一個本機組件(如 DB2? 連接)正在泄漏時,此問題發(fā)生。

          對于這兩種情形,不管是否有大量的可用 Java 堆空間,內(nèi)存不足錯誤都可能發(fā)生。因此,用于 Java 的內(nèi)存轉(zhuǎn)儲診斷工具在確定這些情況中的根本原因時可能無效。


          相關(guān)信息
          IBM developer kits: Diagnosis documentation



          允許自動生成堆轉(zhuǎn)儲

          使用此任務(wù)來啟用自動化堆轉(zhuǎn)儲生成。如果使用的 Sun Java 虛擬機(JVM)包含在 HP-UX 和 Solaris 操作系統(tǒng)上運行 WebSphere Application Server,那么不支持此功能。您需要研究一下如何在 Sun JVM 上收集堆轉(zhuǎn)儲,或者致電 IBM 支持機構(gòu)。

          在您開始之前

          雖然只有在檢測到內(nèi)存泄漏時才會生成堆轉(zhuǎn)儲,但是,您必須知道,生成堆轉(zhuǎn)儲時會嚴(yán)重影響 WebSphere Application Server 的性能,并且時間長達數(shù)分鐘。

          關(guān)于本任務(wù)

          自動化堆轉(zhuǎn)儲生成支持,它僅在 IBM Software Development Kit 中可用,并且會分析 AIX、Linux 和 Windows 操作系統(tǒng)上的內(nèi)存泄漏問題。

          在相應(yīng)的時間手動生成堆轉(zhuǎn)儲可能很困難。為了在進行內(nèi)存泄漏檢測時幫助您分析內(nèi)存泄漏問題,提供了一些自動化堆轉(zhuǎn)儲生成支持。此功能僅對 AIX、Linux 和 Windows 操作系統(tǒng)上的 IBM Software Development Kit 可用。

          大多數(shù)內(nèi)存泄漏分析工具對兩個堆轉(zhuǎn)儲執(zhí)行不同形式的評估。在檢測可疑的內(nèi)存情況時,將在相應(yīng)的時間自動生成兩個堆轉(zhuǎn)儲。通常理想狀態(tài)是一進行問題檢測時就執(zhí)行初始堆轉(zhuǎn)儲。在確定泄漏了一定量的內(nèi)存后,監(jiān)視內(nèi)存使用情況并進行另一次堆轉(zhuǎn)儲,所以可比較堆轉(zhuǎn)儲以找出泄漏源。

          為了在進行內(nèi)存泄漏檢測時幫助您分析內(nèi)存泄漏問題,提供了一些自動化堆轉(zhuǎn)儲生成支持。

          要自動生成堆轉(zhuǎn)儲,請在管理控制臺中執(zhí)行以下步驟:

          過程

          1. 在管理控制臺導(dǎo)航樹中單擊服務(wù)器 > 應(yīng)用程序服務(wù)器
          2. 單擊 server_name > 性能和診斷顧問程序配置
          3. 單擊運行時選項卡。
          4. 選中啟用自動堆轉(zhuǎn)儲收集復(fù)選框。
          5. 單擊確定

          結(jié)果

          完成這些步驟后,系統(tǒng)將自動生成堆轉(zhuǎn)儲。

          要點:為了節(jié)省磁盤空間,如果在 WebSphere Application Server 主目錄中已有 10 個以上的堆轉(zhuǎn)儲,性能和診斷顧問程序就會停止創(chuàng)建堆轉(zhuǎn)儲。根據(jù)應(yīng)用程序服務(wù)器上的堆大小以及工作負載的不同,創(chuàng)建堆轉(zhuǎn)儲的成本可能非常高,并且可能會暫時影響系統(tǒng)性能。

          下一步做什么?

          您可以通過檢查 SystemOut.log 文件或運行時消息來監(jiān)視內(nèi)存泄漏通知。有關(guān)更多信息,請參閱查看性能和診斷顧問程序建議 主題。如果檢測到內(nèi)存泄漏,并且您想要查找堆轉(zhuǎn)儲,請參閱查找和分析堆轉(zhuǎn)儲主題。


          posted on 2008-09-10 15:36 Robin's Programming World 閱讀(3078) 評論(5)  編輯  收藏 所屬分類: JavaWebshere

          評論:
          # re: Websphere 6.1關(guān)于堆轉(zhuǎn)儲的相關(guān)資料匯集 2008-09-10 15:43 | 艾依然
          好文章,謝謝分享!  回復(fù)  更多評論
            
          # re: Websphere 6.1關(guān)于堆轉(zhuǎn)儲的相關(guān)資料匯集 2008-10-22 10:58 | winters
          真搞笑
          “一直以來,發(fā)現(xiàn)有某些人完全不尊重我的勞動成果,隨意轉(zhuǎn)載,提醒一下那些人小心哪天惹上官司。”

          明明轉(zhuǎn)載IBM的文章,還說是自己的。。

          無語了。  回復(fù)  更多評論
            
          # re: Websphere 6.1關(guān)于堆轉(zhuǎn)儲的相關(guān)資料匯集 2008-10-22 17:28 | Robin's Java World
          @winters
          文章中已經(jīng)標(biāo)明了參考資料是來自IBM呀。  回復(fù)  更多評論
            
          # re: Websphere 6.1關(guān)于堆轉(zhuǎn)儲的相關(guān)資料匯集 2009-06-15 08:57 | ufo
          (web server軟件)UFO不會出現(xiàn)一個字節(jié)的內(nèi)存泄漏和一個線程的不能回收,使用UFO做Web Server的好處是網(wǎng)站能做得很穩(wěn)定,永遠也不會自己down掉;UFO在托管機房丟包率很高、遭受Hacker攻擊、互聯(lián)網(wǎng) 骨干網(wǎng)被黑等惡劣的環(huán)境條件下仍然能很好地運行;UFO在對付Hacker方面(防Hacker弄down和Hacker抓取不該訪問的資源)也有足 夠措施。
          另外,UFO幾乎不會進行垃圾回收,消耗CPU很少,在普通的PC Server上用UFO運行網(wǎng)站,平時CPU占用率<0.1%,最多時也不會超 過5%。您知道,JVM的垃圾回收會導(dǎo)致大量的運算,消耗很多CPU,從而導(dǎo)致Server的負載能力和響應(yīng)速度下降。UFO在對象管理方面采 用了很好的機制和算法,做得很出色。用UFO運行網(wǎng)站,可以一直保證高負載能力,快速的響應(yīng)速度和低CPU消耗。發(fā)布網(wǎng)址:www.gm365.com
            回復(fù)  更多評論
            
          # re: Websphere 6.1關(guān)于堆轉(zhuǎn)儲的相關(guān)資料匯集 2009-06-15 10:09 | Robin's Java World
          @ufo
          吹得這么好?
          不用GC?誰相信?說說你的原理讓大家聽聽。  回復(fù)  更多評論
            
          主站蜘蛛池模板: 临漳县| 乐山市| 双鸭山市| 驻马店市| 遵义市| 阳谷县| 延长县| 阳信县| 广水市| 久治县| 朝阳市| 星子县| 石门县| 双流县| 得荣县| 安塞县| 成都市| 栖霞市| 四子王旗| 淮南市| 柳林县| 格尔木市| 靖远县| 察雅县| 五莲县| 乌拉特后旗| 武隆县| 孝感市| 和平区| 封开县| 斗六市| 潜江市| 会理县| 南投县| 永泰县| 新丰县| 彭山县| 改则县| 南川市| 海口市| 山丹县|