亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

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

利用 Oracle DMS 測量 Java 應用程序性能

2019-11-18 13:16:26
字體:
來源:轉載
供稿:網友

  假如您開發了一個運行在 Oracle 應用服務器 (OracleAS) 或 Oracle Containers for J2EE (OC4J) 上的 java 應用程序,那么您可以使用 Oracle 的動態監控服務 (DMS) 來測量您的應用程序的性能。本文分幾個簡單的步驟說明了如何預備好您的應用程序,以進行性能測量,并如何讀取結果。
  
  Oracle DMS 提供了一組 Java 和 C API 來為 OracleAS 和其它的 Oracle 產品測量和報告性能量度、狀態、信息和診斷信息。Oracle 產品調用 DMS 函數庫例程來計算量度,并把它們輸出到 Oracle 企業治理器中。有關監控和優化 OracleAS 及其組件的性能的具體信息,請參見 Oracle application Server 10g 性能指南。
  
  DMS 測量 API 小、簡單而高效。為了創建定制的量度,開發人員在事件發生時、重要的時間段開始和結束時、或者當預先計算的性能量度改變了它們的值時通知 DMS。然后,DMS 將量度發送到 Oracle 企業治理器,將它們轉儲到文本文件中,或者進行格式化,以適合 web 瀏覽器。
  
  下面進行簡要介紹:首先,您將需要確定您要測量應用程序的動作(可能以某種層次表示;例如,“讀時間”和“寫時間”可以結合構成“總時間”),然后創建一個預備這些定時“事件”的結構的專用 Java 類。然后在 Java 應用程序的相關位置上,調用這個專用類中的方法來啟動和停止相關的定時器。然后運行應用程序(運行多次以采集實際的平均值),并通過一個專門的 URL 來查看時間測量的結果。
  
  下面更具體地介紹了這個過程中的步驟:
  
  第 1 步:確定您想要測量的應用程序部分
  下面是根據我自己經驗而編寫的示例:為了進行概念驗證,我的小組需要顯示 Java 應用程序中的一個特定序列的步驟可以在 10 秒內執行。我們想要測量總時間,以及每一個步驟花費多少時間(從而我們能夠指出需要改進的地方)。
  
  我們想要測量以下步驟所花費的時間(三層的層次結構):
  
  總時間
  檢索數據(不需部分求和)
  讀取數據庫
  寫入文件
  計算
  計算的初始化
  重復計算步驟
  提交結果
  圖形表示
  字母數字表示
  這些測量必須在應用程序的每次運行中進行,以便您能夠比較它們在不同情況下的值,并為每一個應用程序組件計算平均時間。就我們而言,輸入參數之一是計算步驟的數目,因此我們運行了幾次,每次執行不同數量的步驟。因此,我們能夠指出哪些部分有一致的性能,以及假如我們增加步驟數,對于其它的部分需要增加多少時間。
  
  第 2 步:安裝 dms.jar
  找到 dms.jar(在 [OC4J_HOME]/lib 或 [OracleAS_HOME]/lib 中),并確保它在您的應用程序的類路徑中(非凡在開發環境中,因為假如您部署到 OracleAS 或 OC4J 中,那么在部署環境中它將已經存在)。假如您使用 JDeveloper,那么您可以將 dms.jar 作為一個資料庫添加到 JDeveloper 項目設置中,以實現這一目的。為您的項目創建一個新的資料庫,然后在它的類路徑中為 dms.jar 增加一個項目(指定到 dms.jar 的完整路徑)。
  
  第 3 步:創建類 PerformanceMeasurement
  在您的 Java 應用程序中創建一個新的 Java 類,在該類中您可以預備好測量層次結構。列表 1 顯示了一個預備第 1 步中說明的層次結構的示例類。這個示例使用 DMS PhaseEvent 感應器(“定時器”)來測量在代碼的完整特定部分中所花費的時間,并且它使用 DMS Nouns(“樹結構”)來在一個層次結構中組織 PhaseEvent 感應器,這種層次結構類似于文件系統中的目錄結構。
  
  第 4 步:測量應用程序
  現在,在應用程序中的適當位置開始和停止相應的定時器已非常輕易(用 DMS 的術語,這稱為 "instrumenting")。您所需要做就是初始化一個 PerformanceMeasurement 對象,然后將這個對象傳遞給需要控制這些定時器中的某一個啟動和停止的 Java 例程。
  
  下面是一個示例代碼段:
  
  // Initialize Performance Measurement object
  p = new PerformanceMeasurement("MyApplication_"+numberOfSteps+"_steps");
  p.start(p.TOTAL);
  
  // And now the actual steps in the case
  DataHandler.getData(p);
  doCalculations(p);
  generateChart(p);
  
  您可以按您的需要頻繁調用 p.start 和 p.stop,只要您確保對于某個定時器的每一次啟動操作,總存在對該定時器的停止操作。
  
  例如:
  
  p.start(p.READING);
  // Load the Oracle JDBC driver and connect to the database
  ...
  p.stop(p.READING);
  
  p.start(p.WRITING);
  // Initialize output file
  ...
  p.stop(p.WRITING);
  
  p.start(p.READING);
  // Get first batch of data
  ...
  p.stop(p.READING);
  
  p.start(p.WRITING);
  // Write first batch of data
  ...
  p.stop(p.WRITING);
  
  記住您還必須手動啟動和停止 Total 和 SuBTotal 定時器。
  
  第 5 步:捕捉一個頁面在瀏覽器中完全顯示的時刻
  在我們的概念驗證中,將在瀏覽器中顯示圖形和字母數字數據所需的時間包括在我們的測量中是必需的。我們的頁面相當大,因此完全加載它要花一些時間。
  
  我們使用一個 javascript 陷阱來捕捉結束時間。Javascript 在客戶機上執行,因此假如您將一段腳本放在頁面的末尾,那么只有頁面在客戶機上完全加載時才執行。在那段腳本中,我們調用了另一個頁面,該頁面調用了一個 Java 方法來停止相應的定時器。
  
  下面是一個示例 jsp 代碼段:
  
  <jsp:useBean id="myApplicationBean" class="MyApplicationBean" scope="session">
  
  <!-- Do all the calculation stuff first -->
  <%
   myApplicationBean.doSteps();
   myApplicationBean.p.start(myApplicationBean.p.GRAPHICAL);
   %>
  ... show chart ...
  <%
   myApplicationBean.p.stop(myApplicationBean.p.GRAPHICAL);
   myApplicationBean.p.start(myApplicationBean.p.ALPHANUMERIC);
  %>
  ... show alphanumerical data ...
  <%
   myApplicationBean.p.stop(myApplicationBean.p.ALPHANUMERIC);
  %>
  <script>
   window.open('Stop.jsp', 'stop', 'width=50,height=50');
  </script>
  </JSP:USEBEAN>
  <JSP:USEBEAN class=MyApplicationBeanid=myApplicationBean scope="session">
  
  下面是 Stop.jsp 的源代碼:
  
  <%@ page contentType="text/Html;charset=windows-1252"%>
  <jsp:useBean id="hopCalBean" class="HopCalBean" scope="session"/>
  
  Stop!!!!
  
  <% myApplicationBean.stop(); %>
  
  myApplicationBean.stop() 方法包含以下 Java 代碼:
  
  /*
  * This method will be called after everything has been done.
   */
  public void stop()
  {
  p.stop(p.PRESENTATION_TOTAL);
  p.stop(p.TOTAL);
  p.writeLogFile("d://temp//MyApplicationPerformance.log");
  }
  
  第 6 步:運行應用程序
  現在將經過測量的應用程序部署到 OracleAS 或 OC4J 中,并運行它。DMS 將采集時間統計數據。
  
  假如您想比較幾次運行的時間測量結果,請多次運行您的應用程序(可能用不同的變量,變量可以在初始化 PerformanceMeasurement 對象時放到運行名稱中)。
  
  第 7 步:在瀏覽器中查看 DMS 輸出
  假如您編寫了對 p.writeLogFile 的調用,那么您可以查看該日志文件的內容。它包含原始的 DMS 數據。
  
  通過在應用服務器上調用一個特定的 URL,可以找到一種更加清楚的數據表示方法。用您的 Java 應用程序使用的應用服務器的主機名和端口號來替換 [host:port]。
  
  對于獨立的 OC4J,使用:http://[host:port]/dms0/Spy
  對于 OracleAS,使用:http://[host:port]/dmsoc4j/Spy
  您將看到如下頁面:
  
 利用 Oracle DMS 測量 Java 應用程序性能(圖一)

  正如您所看到的,DMS 還收集 JDBC、JVM 和 OC4J 的統計數據,并且無需任何進一步的調整。關于內置性能量度的一個列表,請參見 Oracle Application Server 10g 性能指南的附錄 A。
  
  要查看某種類別的具體信息,請單擊左邊框中的名稱:
  
利用 Oracle DMS 測量 Java 應用程序性能(圖二)

  總結
  假如您以一種結構化的方式安裝了 DMS Nouns 和 DMS PhaseEvent Sensors(利用一個 PerformanceMeasurement 類),那么利用 DMS,您可以輕易地測量您的 Java 應用程序的性能,并且獲得性能時間測量結果的一種易讀的結構化輸出。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产日韩欧美日韩大片| 亚洲美女av网站| 精品中文字幕乱| 国产精品视频午夜| 久久久久久久电影一区| 日韩一区视频在线| 成人国产精品久久久久久亚洲| 韩国美女主播一区| 国产精品扒开腿做| 亚洲系列中文字幕| 日韩精品免费看| 91豆花精品一区| 国产精品视频区| 欧美激情欧美激情在线五月| 亚洲电影免费观看高清| 91久久精品国产91久久性色| 成人欧美在线观看| 91精品啪aⅴ在线观看国产| 日本亚洲欧美三级| 欧美激情手机在线视频| 中文字幕日韩综合av| 理论片在线不卡免费观看| 久久韩剧网电视剧| 国产精品久久二区| 色综合久综合久久综合久鬼88| 欧美电影免费观看高清完整| 国产精品扒开腿做爽爽爽的视频| 中文字幕亚洲一区二区三区五十路| 在线精品播放av| 亚洲精品网址在线观看| 九色精品免费永久在线| 亚洲电影成人av99爱色| 久久久国产91| 麻豆国产精品va在线观看不卡| 国产精品视频999| 国产一区二区日韩精品欧美精品| 欧美亚洲日本网站| 性色av一区二区三区在线观看| 97国产在线观看| 亚洲国产精品视频在线观看| 一区三区二区视频| 国产精品国内视频| 久久久精品国产| 亚洲男女自偷自拍图片另类| 亚洲香蕉成视频在线观看| 国产女人18毛片水18精品| 欧美交受高潮1| 97在线看免费观看视频在线观看| 欧美美最猛性xxxxxx| 日韩av日韩在线观看| 2023亚洲男人天堂| 92看片淫黄大片欧美看国产片| 亚洲视频axxx| 久久免费国产视频| 91精品国产91久久久久久最新| 日韩在线播放av| 久久色精品视频| 国产精品网站入口| 成人性教育视频在线观看| 美女黄色丝袜一区| 裸体女人亚洲精品一区| 国产精品视频区1| 久久久久久国产免费| 久久精品亚洲精品| 精品久久久久国产| 青草青草久热精品视频在线观看| 97视频在线观看免费高清完整版在线观看| 精品少妇一区二区30p| 国产日韩中文在线| 夜夜嗨av色综合久久久综合网| 欧美激情综合亚洲一二区| 日韩av在线电影网| 亚洲精品成a人在线观看| 亚洲高清在线观看| 日韩欧美精品中文字幕| 国产精品高清在线| 97久久精品人人澡人人爽缅北| 2019国产精品自在线拍国产不卡| 亚洲欧洲日韩国产| 欧美亚洲国产精品| 日韩在线观看网址| 国产亚洲精品一区二555| 亚洲人成在线观看网站高清| 亚洲精品视频在线观看视频| 国产精品欧美亚洲777777| 亚洲电影中文字幕| 欧美黑人视频一区| 国产美女精品免费电影| 91tv亚洲精品香蕉国产一区7ujn| 国产精品久久久久久久天堂| 国产精品香蕉国产| 欧美激情国产日韩精品一区18| 久久手机精品视频| 午夜精品三级视频福利| 久久夜精品va视频免费观看| 精品激情国产视频| 中文字幕精品国产| 日韩女在线观看| 日本一区二区在线免费播放| 欧美激情中文字幕在线| 日韩欧美精品中文字幕| 色老头一区二区三区在线观看| 欧美成在线观看| 永久555www成人免费| 在线免费观看羞羞视频一区二区| 久久国产视频网站| 色播久久人人爽人人爽人人片视av| 欧美日韩另类视频| 国产精品一区二区三区免费视频| 日韩成人中文字幕在线观看| 亚洲欧洲xxxx| 国产亚洲一区二区精品| 久久国产精彩视频| 欧美日韩不卡合集视频| 国产精品久久久久久久久男| 欧美国产亚洲精品久久久8v| 性色av一区二区咪爱| 欧美亚洲在线观看| 91欧美激情另类亚洲| 色午夜这里只有精品| 亚洲精品欧美日韩专区| 91社影院在线观看| 97人人模人人爽人人喊中文字| 亚洲美腿欧美激情另类| 日产日韩在线亚洲欧美| 欧美成年人视频网站欧美| 91精品视频大全| 国产精品精品视频| 国产一区二区久久精品| 亚洲欧美另类中文字幕| 神马国产精品影院av| 在线成人激情视频| 欧美日韩一区免费| 国产精品美女免费视频| 尤物99国产成人精品视频| 日韩av在线网站| 国产最新精品视频| 日韩在线免费视频观看| 一本大道久久加勒比香蕉| 乱亲女秽乱长久久久| 国产精品福利片| 97婷婷大伊香蕉精品视频| 91网站免费观看| 伊人久久久久久久久久| 精品久久久在线观看| 亚洲精品视频网上网址在线观看| 成人动漫网站在线观看| 国产精品无码专区在线观看| 亚洲精品资源在线| 亚洲一区二区久久| 国产亚洲精品久久久久久| 久久99国产综合精品女同| 日韩电视剧在线观看免费网站| 日韩欧美亚洲成人| 丝袜美腿精品国产二区| 在线播放国产一区中文字幕剧情欧美| 日本欧美在线视频| 国产一区玩具在线观看| 国产91九色视频| 欧美成人午夜免费视在线看片| 欧美中文在线视频| 国产在线日韩在线| 精品国产91久久久久久老师| 一夜七次郎国产精品亚洲|