2013-09-27 87 views
2

我在使用Jasper Reports在我的grails應用程序中生成PDF時遇到了嚴重的性能問題。我正在調用jasperService:性能問題jasper報告和grails/groovy

def reportDef = jasperService.buildReportDefinition(parameter, LocaleContextHolder.getLocale(), [data: emptyData]) 

幾次運行在Jboss中,性能很好。 X小時之後,性能比Jboss啓動後的性能差100倍...響應時間從7-12秒變爲幾分鐘,用於創建一個PDF頁面。我相信,性能滯後在這個調用之內,因爲我已經在它周圍增加了時間測量。由於報告數據在參數中傳遞,我可以排除數據庫連接問題。

我已經分析了HEAP,但在PDF創建過程中它被使用了〜50%,並沒有多大變化。整體內存也沒有完全使用。 我已經分析了PermGen,但它也很不完整。

創建過程中CPU IST永久100%,這是確定的,因爲知道PDF創作是非常佔用CPU。我已經確保沒有其他進程持續創建PDF,第一次通過多次重啓進程並測量沒有差異,所以我可以排除外部中斷,第二)知道如果JBoss重新啓動,性能會更好。

由於事實,我已經開始通過在運行PDF創建線程分析線程轉儲分析JBoss的本身。我看到沒有別的東西在運行(線程轉儲線程除外),既不是在重啓後很慢也不是很快。我可以看到,在幾個線程轉儲Groovy的是使一些AST轉換這是不奇怪的對Groovy ...

現在,我絕望了。 HEAP/PermGen可以,CPU可以。 Jasper Reports/Grails在做什麼?

也許有人對根本原因做過類似的經歷或想法?在Jasper Reports中是否有需要/應該清理的內容?

編輯:我的進一步分析產量爲發麪,但一定成果是JBoss的7.1.1(最新的穩定)是根本原因。在Tomcat上安裝該應用程序後,所有內容都可以在幾天後順利運行。我會保持這個開放。也許有人有相同的經歷,並喜歡張貼...?否則,我會用這個解決方案關閉它。我可能會在早期版本的Jboss或7.2/7.3上測試我的應用程序。

回答

0

的解決方案是,我們還沒有覺察到JBoss的是部分無視我們的Log4j配置,並大量登錄到我們沒有監測server.log的。 Jasper和Grails插件爲每個PDF生成日誌文件寫了幾十MB。刪除這些日誌插入後,性能再次良好。