水晶报告 - reportdocument.load上的性能不佳
-
24-10-2019 - |
题
我们的应用程序遇到了一些性能问题,其中Crystal Reports(XI)在WCF服务中托管。在性能探索器的帮助下,我们能够发现对ReportDocument.load的呼叫需要10秒钟。如果我们更深入地研究,最有问题的一点是在ReportClientDocumentClass.open方法中,这是整整10秒的时间。
我们将其称为这样的负载方法:
dim doc As ReportDocument = New CrystalDecisions.CrystalReports.Engine.ReportDocument
doc.Load("filename")
报告文件托管在同一家服务器上,而不是服务。
reportDocument.load的“堆栈跟踪”看起来像:
ReportDocument.Load
ReportClientDocumentWrapper.EnsureDocumentIsOpened
ReportClientDocumentWrapper.Open
ReportClientDocumentClass.Open
就像我上面提到的那样,对reportClientDocumentClass.open的呼吁是“悬挂”。有什么想法会导致这一点吗?
解决方案
最初的问题是指向打印机的。打开方法的电话试图连接到设计报告时使用的打印机。部署报告后,不再可用打印机,但是要注意这一点,需要大约15秒钟的时间才能注意到这一点。
打开报告并将其设置为不使用打印机修复了此特定的性能问题。
其他提示
我已经注意到WCF服务,我正在分析 Client > WCF > Service
呼叫具有以下性能特征:
- 首先通过客户的新实例致电服务:
- 在不运行客户1-2分钟之后:〜12-15秒;
- 关闭客户端的先前实例之后:〜1.1秒;
- 重新启动窗口后:〜21秒;
- 随后通过客户端的现有实例致电服务:〜0.1秒
使用512 MB RAM运行Windows 2003 Server SP2。
我不确定WCF中的什么是触发这种性能变化。
不隶属于 StackOverflow