2011-06-03 83 views
4

我有一個性能問題的BIRT報告:大約需要5分鐘才能運行。如何基準BIRT報告表現?

開始時我的問題是數據庫:這個報表使用一個相當複雜的SQL Server存儲過程來檢索數據。經過很多SQL優化之後,此過程現在需要大約20秒才能運行(在管理控制檯中)。

但是,報告本身仍然需要太多時間(幾分鐘)。如何識別BIRT報告生成中的其他瓶頸?有沒有辦法分析整個過程?我正在使用www查看器(運行在Tomcat 5.5中)運行它,並且我沒有任何Java事件處理程序,一切都是使用標準SQL和JavaScript完成的。

我觀看了網絡研討會「設計高性能BIRT報表」 1,它有一些有趣的因素,但它並沒有太大的幫助......

回答

2

我寫這篇文章回答的問題正逐漸接近到2歲,所以想必你找到了解決問題的辦法。沒有人爲整個過程提供分析器,所以這裏有一些確定瓶頸的方法。

  1. 啓動時間 - 大約一分鐘都可以在這裏

    • 運行花了幾個報告一前一後或第一運行可以幫助診斷問題後,開始第二。
  2. SQL查詢的運行時間 - 良好的解決方案,在這個問題

    • 任何SQL跟蹤和性能測試將確定問題提到。
  3. 構建報告 - 這是我注意到獅子分享的時間。在創建報表時運行SQL跟蹤。即使是一個包含大量數據的相對簡單的表格,在SQL跟蹤指示查詢完成後,也可能需要大約一分鐘時間配置並顯示(通過apache tomcat的HTML)

    • 簡化報告或者創建擁有更少的圖表中有和無片運行,看是否有創造一個顯着的區別
    • 修改查詢帶回少的記錄,少記錄更容易顯示出克隆,
  4. 交付方式PDF,Excel和HTML每個人都可以有不同的問題

    • 嘗試不同的格式
    • 報告
    • 如果一個顯着更大,嘗試不同的發射器。
+0

謝謝,但不幸的是當時我嘗試了一些沿着這些路線,無濟於事 - 我仍然不知道爲什麼它如此緩慢。最後,我放棄了使用BIRT並簡單地使用普通的舊servlet重寫了所有內容,直接使用out.println輸出HTML!這是一個醜陋的,不可維護的CGI般的野獸,但至少我達到了客戶期待的性能水平...... – muriloq 2013-04-25 21:40:06

3

對於其他人具有BIRT的性能問題,這裏有一些更多的提示。

  • 可以使用任何Java事件探查器來分析BIRT報告 - 編寫一個簡單的Java測試來運行報告,然後對其進行概要分析。 作爲示例,我使用SpudSoft BIRT Excel Emitters的單元測試並在Eclipse中運行JProfiler。 問題不在於難以分析它,而在於瞭解所生成的數據:)

  • 與DataSources相關的腳本可能會導致性能下降。即使是一個看起來好像只應該有影響的劇本也能夠阻止這件事。這是我發現的最大的性能殺手(如此之大,我重寫了相當一部分Excel發射器,使其成爲不必要的)。

  • 您使用的發射器有影響。 如果您試圖縮小性能問題,請始終單獨執行「運行」和「渲染」任務,以便輕鬆查看集中精力的位置。

  • 不同的發射器選項可能會影響性能,特別是對於第三方發射器(SpudSoft發射器現在有幾個選項可以使得大型報告更快)。

  • 固定佈局和自動佈局之間的差異很大,請嘗試兩者。

0

您是否檢查過您在Tomcat中使用了多少內存?你可能沒有分配足夠的內存。快速測試是啓動BIRT Designer併爲其分配額外的內存。然後,在BIRT Designer軟件中運行報告。