【问题标题】:How to benchmark BIRT report performance?如何对 BIRT 报告性能进行基准测试?
【发布时间】:2011-06-03 12:19:49
【问题描述】:

我有一个存在性能问题的 BIRT 报告:运行大约需要 5 分钟。

一开始我以为问题是数据库:这个报告使用了一个相当复杂的 SQL Server 存储过程来检索数据。经过大量 SQL 优化后,此过程现在需要大约 20 秒才能运行(在管理控制台中)。

但是,报告本身仍然需要太多时间(几分钟)。如何识别 BIRT 报告生成中的其他瓶颈?有没有办法描述整个过程?我正在使用 www 查看器(在 Tomcat 5.5 中运行)运行它,并且我没有任何 Java 事件处理程序,一切都是使用标准 SQL 和 JavaScript 完成的。

我观看了“设计高性能 BIRT 报告”1 网络研讨会,其中有一些有趣的考虑,但并没有太大帮助...

【问题讨论】:

    标签: performance birt


    【解决方案1】:

    当我写这个答案时,这个问题已经接近 2 年了,所以大概你找到了解决这个问题的方法。没有人为整个过程提供分析器,所以这里有一些识别瓶颈的方法。

    1. 启动时间 - 这里大约可以花一分钟

      • 一个接一个地运行多个报告或在第一个运行后开始第二个报告可以帮助诊断问题。
    2. SQL 查询运行时 - 问题中提到了好的解决方案

      • 任何 SQL 跟踪和性能测试都会发现问题。
    3. 构建报告 - 这是我注意到花费大量时间的地方。在创建报告时运行 SQL 跟踪。在 SQL 跟踪指示查询完成后,即使是具有大量数据的相对简单的表也可能需要大约一分钟的时间来配置和显示 (HTML via apache tomcat)

      • 简化报告或创建一个包含更少图形或表格的克隆,无论是否运行,看看是否有任何显着差异
      • 修改查询以带回更少的记录,更少的记录更容易显示,
    4. 交付方式 PDF、Excel、HTML 可能有不同的问题

      • 尝试不同格式的报告
      • 如果一个明显更大,请尝试不同的发射器。

    【讨论】:

    • 谢谢,但不幸的是,当时我尝试了一些类似的方法,但无济于事 - 我仍然不知道为什么它这么慢。在这篇具体报告的最后,我放弃了使用 BIRT,只是使用普通的旧 servlet 重写了所有内容,直接使用 out.println 输出 HTML!这是一个丑陋、难以维护的 CGI 类野兽,但至少我达到了客户期望的性能水平......
    【解决方案2】:

    对于其他遇到 BIRT 性能问题的人,这里还有一些提示。

    • 可以使用任何 Java 分析器来分析 BIRT 报告 - 编写一个简单的 Java 测试来运行您的报告,然后对其进行分析。 作为示例,我使用来自SpudSoft BIRT Excel Emitters 的单元测试并在 Eclipse 中运行 JProfiler。 问题不在于分析它的困难,而在于理解产生的数据:)

    • 与数据源关联的脚本绝对会影响性能。即使是一个看起来似乎只应该预先产生影响的脚本也可以真正阻止这件事。这是我发现的最大性能杀手(如此之大,我重写了相当多的 Excel 发射器以使其变得不必要)。

    • 您使用的发射器会产生影响。 如果您试图缩小性能问题的范围,请始终执行单独的 Run 和 Render 任务,以便您可以轻松查看集中精力的位置。

    • 不同的发射器选项会影响性能,尤其是第三方发射器(SpudSoft 发射器现在有一些选项可以更快地生成大型报告)。

    • Fixed-Layout 和 Auto-Layout 的区别很大,两者都试试。

    【讨论】:

      【解决方案3】:

      您是否检查过您在 Tomcat 中使用了多少内存?您可能没有分配足够的内存。一个快速测试是启动 BIRT Designer 并为其分配额外的内存。然后,在 BIRT Designer 软件中运行报告。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2010-12-20
        • 2012-03-28
        • 2018-08-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-13
        相关资源
        最近更新 更多