知识大全 利用 Oracle DMS 测量 Java 应用程序性能

Posted 测量

篇首语:生活只有在平淡无味的人看来才是空虚而平淡无味的。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 利用 Oracle DMS 测量 Java 应用程序性能相关的知识,希望对你有一定的参考价值。

利用 Oracle DMS 测量 Java 应用程序性能  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  如果您开发了一个运行在 Oracle 应用服务器 (OracleAS) 或 Oracle Containers for J EE (OC J) 上的 Java 应用程序 那么您可以使用 Oracle 的动态监控服务 (DMS) 来测量您的应用程序的性能 本文分几个简单的步骤说明了如何准备好您的应用程序 以进行性能测量 并如何读取结果     Oracle DMS 提供了一组 Java 和 C API 来为 OracleAS 和其它的 Oracle 产品测量和报告性能量度 状态 信息和诊断信息 Oracle 产品调用 DMS 函数库例程来计算量度 并把它们输出到 Oracle 企业管理器中 有关监控和优化 OracleAS 及其组件的性能的详细信息 请参见 Oracle Application Server g 性能指南     DMS 测量 API 小 简单而高效 为了创建定制的量度 开发人员在事件发生时 重要的时间段开始和结束时 或者当预先计算的性能量度改变了它们的值时通知 DMS 然后 DMS 将量度发送到 Oracle 企业管理器 将它们转储到文本文件中 或者进行格式化 以适合 web 浏览器     下面进行简要介绍 首先 您将需要确定您要测量应用程序的动作(可能以某种层次表示 例如 读时间 和 写时间 可以结合构成 总时间 ) 然后创建一个准备这些定时 事件 的结构的专用 Java 类 然后在 Java 应用程序的相关位置上 调用这个专用类中的方法来启动和停止相关的定时器 然后运行应用程序(运行多次以采集实际的平均值) 并通过一个专门的 URL 来查看时间测量的结果     下面更详细地介绍了这个过程中的步骤      第 步 确定您想要测量的应用程序部分  下面是根据我自己经验而编写的示例 为了进行概念验证 我的小组需要显示 Java 应用程序中的一个特定序列的步骤可以在 秒内执行 我们想要测量总时间 以及每一个步骤花费多少时间(从而我们能够指出需要改进的地方)     我们想要测量以下步骤所花费的时间(三层的层次结构)     总时间   检索数据(不需部分求和)   读取数据库   写入文件   计算   计算的初始化   重复计算步骤   提交结果   图形表示   字母数字表示   这些测量必须在应用程序的每次运行中进行 以便您能够比较它们在不同情况下的值 并为每一个应用程序组件计算平均时间 就我们而言 输入参数之一是计算步骤的数目 因此我们运行了几次 每次执行不同数量的步骤 因此 我们能够指出哪些部分有一致的性能 以及如果我们增加步骤数 对于其它的部分需要增加多少时间      第 步 安装 dms jar  找到 dms jar(在 [OC J_HOME]\\lib 或 [OracleAS_HOME]\\lib 中) 并确保它在您的应用程序的类路径中(特别在开发环境中 因为如果您部署到 OracleAS 或 OC J 中 那么在部署环境中它将已经存在) 如果您使用 JDeveloper 那么您可以将 dms jar 作为一个资料库添加到 JDeveloper 项目设置中 以实现这一目的 为您的项目创建一个新的资料库 然后在它的类路径中为 dms jar 增加一个项目(指定到 dms jar 的完整路径)      第 步 创建类 PerformanceMeasurement  在您的 Java 应用程序中创建一个新的 Java 类 在该类中您可以准备好测量层次结构 列表 显示了一个准备第 步中说明的层次结构的示例类 这个示例使用 DMS PhaseEvent 感应器( 定时器 )来测量在代码的完整特定部分中所花费的时间 并且它使用 DMS Nouns( 树结构 )来在一个层次结构中组织 PhaseEvent 感应器 这种层次结构类似于文件系统中的目录结构      第 步 测量应用程序  现在 在应用程序中的适当位置开始和停止相应的定时器已非常容易(用 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 定时器      第 步 捕获一个页面在浏览器中完全显示的时刻  在我们的概念验证中 将在浏览器中显示图形和字母数字数据所需的时间包括在我们的测量中是必需的 我们的页面相当大 因此完全加载它要花一些时间     我们使用一个 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= height= );  </script>  </JSP:USEBEAN>  <JSP:USEBEAN class=MyApplicationBeanid=myApplicationBean scope= session >    下面是 Stop jsp 的源代码     <%@ page contentType= text/;charset=windows %>  <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 );       第 步 运行应用程序  现在将经过测量的应用程序部署到 OracleAS 或 OC J 中 并运行它 DMS 将采集时间统计数据     如果您想比较几次运行的时间测量结果 请多次运行您的应用程序(可能用不同的变量 变量可以在初始化 PerformanceMeasurement 对象时放到运行名称中)      第 步 在浏览器中查看 DMS 输出  如果您编写了对 p writeLogFile 的调用 那么您可以查看该日志文件的内容 它包含原始的 DMS 数据     通过在应用服务器上调用一个特定的 URL 可以找到一种更加清晰的数据表示方法 用您的 Java 应用程序使用的应用服务器的主机名和端口号来替换 [host:port]     对于独立的 OC J 使用//[host:port]/dms /Spy   对于 OracleAS 使用//[host:port]/dmsoc j/Spy   您将看到如下页面    >  正如您所看到的 DMS 还收集 JDBC JVM 和 OC J 的统计数据 并且无需任何进一步的调整 关于内置性能量度的一个列表 请参见 Oracle Application Server g 性能指南的附录 A     要查看某种类别的详细信息 请单击左边框中的名称    >   总结  如果您以一种结构化的方式安装了 DMS Nouns 和 DMS PhaseEvent Sensors(利用一个 PerformanceMeasurement 类) 那么利用 DMS 您可以容易地测量您的 Java 应用程序的性能 并且获得性能时间测量结果的一种易读的结构化输出 cha138/Article/program/Java/JSP/201311/19348

相关参考

知识大全 利用Java服务程序开发三层次数据库应用程序

利用Java服务程序开发三层次数据库应用程序  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  本文

知识大全 在Oracle中使用Java存储过程

在Oracle中使用Java存储过程  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Java存储

知识大全 一个JAVA连接ORACLE的例子

一个JAVA连接ORACLE的例子  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  例子    p

节流在工程上有何应用?

  1)利用节流降低工质压力。  2)在汽封系统中,利用节流减小蒸汽的漏泄量。  3)利用节流特性测量流体的流量。  4)利用节流调节汽轮机的功率。

节流在工程上有何应用?

  1)利用节流降低工质压力。  2)在汽封系统中,利用节流减小蒸汽的漏泄量。  3)利用节流特性测量流体的流量。  4)利用节流调节汽轮机的功率。

知识大全 在Oracle中用java编写存储过程

在Oracle中用java编写存储过程  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Oracl

知识大全 使用java调用timesten实现Oracle入库

使用java调用timesten实现Oracle入库  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

知识大全 用java从oracle取数

  /*droptablevarray_table;droptypenum_varray;  CREATETYPEnum_varrayASVARRAY()OFVARCHAR()/CREATETABLE

知识大全 java调用oracle存储过程

  一无返回值的存储过程  存储过程为  CREATEORREPLACEPROCEDURETESTA(PARAINVARCHARPARAIN VARCHAR) 

知识大全 Java与Oracle的两种连接方式

Java与Oracle的两种连接方式  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  第一种方式通