麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

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

利用 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 應用程序的性能,并且獲得性能時間測量結果的一種易讀的結構化輸出。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 黄色成人在线 | 免费在线成人网 | 深夜福利久久久 | 久久99精品国产自在现线 | 99影视在线视频免费观看 | 最新欧美精品一区二区三区 | 欧美性生活视频免费 | 久久久久久片 | 免费毛片观看 | 毛片在哪看| 国产精品成人久久久久a级 av电影在线免费 | 成年人毛片视频 | 在线播放一区二区三区 | 日韩美香港a一级毛片免费 欧美一级淫片007 | 久久影院免费观看 | 黄色网址免费进入 | xnxx 日本19| 国产精品9191 | 免费观看黄视频 | 蜜桃网站在线 | 在线免费日韩 | 欧美成人做爰高潮片免费视频 | 黄色视频一级毛片 | 亚洲一级片免费观看 | 一级做受大片免费视频 | 黄色一级毛片免费看 | 国产片91| 久久国产中文字幕 | 欧美1区2区在线观看 | 日韩2区| 久久影城 | 久久精品国产99国产精品亚洲 | 一本一本久久a久久精品综合小说 | 成品片a免人视频 | 国产日韩在线观看一区 | 亚洲综合视频网 | 4480午夜| 男女无遮挡羞羞视频 | 国产福利不卡一区二区三区 | 欧美不卡 | 高清中文字幕在线 |