【问题标题】:points for executing performance tests on an application对应用程序执行性能测试的要点
【发布时间】:2011-09-13 17:05:31
【问题描述】:

在使用 Hibenate 作为 ORM 工具和 Oracle 11G 作为数据库的 Java 应用程序上执行性能测试时,有哪些要点。

我也在考虑对应用程序进行基准测试。那我该怎么办。

谢谢

【问题讨论】:

    标签: java performance oracle hibernate


    【解决方案1】:

    不确定您的应用程序“使用 Oracle 11G 作为数据库”的程度,甚至不确定您拥有什么类型的环境(我假设是典型的 oltp),但从 Oracle 方面您可以做几件事(仅举几例):

    1. 从整体数据库的角度来看,查看 AWR(Automatic Workload Repository,以前的 statspack)。我相信这也内置于 Enterprise Manager 中。
    2. SQL Trace + tkprof
    3. 如果使用任何 pl/sql,DBMS_HPROF(分层分析器)。
    4. 如果使用任何 pl/sql,将重要的操作记录到日志表中(通过自主事务),记录每个条目的时间戳、采取的操作等。自行开发或使用现有框架(有几个)。只需确保其灵活(可以更改日志输出的级别)。

    【讨论】:

      【解决方案2】:

      首先要确定可接受的性能。如果没有该协议,其他任何事情都为时过早。

      不同的应用类型会有不同的痛点。读写混合、并发更新(尤其是在相同数据上 - 例如销售音乐会门票或飞机座位)、数据量。

      【讨论】:

        【解决方案3】:

        关键是:

        1) 就使用实际使用场景对应用程序进行实际测试 - 这在实践中可能相当复杂 - 我过去使用过基于 www::mechanize 和 http::recorder for this 的 Perl 脚本.

        2) 失败的 ab 或 jmeter

        3) 尽可能多地记录(您没有提及您使用的网络服务器 - 如果它是 apache,请在日志中添加 %D)

        4) 确保系统饱和 - 你想确保你得到一些主要的垃圾收集(或证明它的同态性 - 这对于 Java 程序来说是非常罕见的事情)

        5) 分析网络服务器和 gc 日志。

        【讨论】:

          【解决方案4】:

          不确定使用不同的技术(例如,在您的情况下使用 Hibernate)是否会改变您执行应用程序性能测试的方式。

          有运行性能测试的标准工具,它们也应该适用于您的应用程序使用的技术。

          将 show_sql 设为 true 肯定有助于查看查询并进一步分析它们,但可能无助于您的应用程序的整体性能测试。

          查看以下帖子 Java benchmarking tool 了解基准测试工具。

          希望这会有所帮助。

          【讨论】:

            【解决方案5】:

            让 Hibernate 记录所有执行的 SQL。

            检查this link 的配置属性并将hibernate.show_sql 设置为true。一旦您可以看到正在执行的内容,请检查任何异常语句并在您怀疑它们比预期慢时对其进行分析。

            之后检查它们的执行计划并对其进行调整以进行更优化将有助于您的应用程序和您的数据库。

            【讨论】:

              猜你喜欢
              • 2019-04-23
              • 1970-01-01
              • 1970-01-01
              • 2022-11-12
              • 2015-03-28
              • 2012-08-03
              • 2010-10-22
              • 2022-01-13
              • 1970-01-01
              相关资源
              最近更新 更多