2011-06-13 76 views

回答

1

关键的事情是:

1)尽可能的实际测试使用真实的使用场景的应用程序 - 这可能是相当复杂的实践 - 我已经基于万维网使用Perl脚本::机械化和http ::记录器for this在过去。

2)不认为AB或JMeter的

3)记录作为锚赫越好(你不提您所使用的web服务器 - 如果它的阿帕奇,在日志中添加%d)

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

5)分析webserver和gc日志。

0

让Hibernate记录所有执行的SQL。

检查this link的配置属性并将hibernate.show_sql设置为true。一旦你能看到正在执行的内容,如果你怀疑它们比预期的要慢,请检查任何不寻常的语句并描述它们。

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

0

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

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

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

查看以下文章Java benchmarking tool的基准测试工具。

希望这会有所帮助。

1

首先要开始的是同意什么是可接受的性能。没有这个协议,任何事情都是不成熟的。

不同的应用程序类型将有不同的痛点。读写混合,并发更新(特别是在相同的数据上 - 例如销售演唱会门票或飞机座位),数据量。

1

不知道你的应用程序“使用Oracle 11G作为数据库”的程度,甚至是什么类型的环境(我假设是典型的oltp),但从Oracle方面你可以做几件事情:

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