2

我们的应用程序存在一些性能问题,其中 Crystal Reports (XI) 托管在 WCF 服务中。在性能分析器的帮助下,我们能够发现对 ReportDocument.Load 的调用花费了 10 多秒。如果我们深入挖掘,最有问题的一点是 ReportClientDocumentClass.Open-method,它需要整整 10 秒。

我们这样调用 Load 方法:

dim doc As ReportDocument = New CrystalDecisions.CrystalReports.Engine.ReportDocument
doc.Load("filename")

报告文件与服务托管在同一台服务器上。

ReportDocument.Load 的“堆栈跟踪”如下所示:

ReportDocument.Load
ReportClientDocumentWrapper.EnsureDocumentIsOpened
ReportClientDocumentWrapper.Open
ReportClientDocumentClass.Open

就像我上面提到的那样,对 ReportClientDocumentClass.Open 的调用是“悬而未决”的。任何可能导致这种情况的想法?

4

2 回答 2

2

The original problem was pinpointed to the printers. The call to Open-method tries to connect to the printer which was used when the report was designed. When the report was deployed, the printer wasn't available anymore but it took Crystal around 15 seconds to notice that.

Opening the report and setting it to use no printer fixed this particular performance problem.

于 2011-02-28T15:56:28.283 回答
0

我注意到我正在分析的 WCF 服务Client > WCF > Service调用具有以下性能特征:

  1. 首先由客户端的新实例调用服务:
    1. 不运行客户端 1-2 分钟后:~12-15 秒;
    2. 关闭客户端的前一个实例后:~1.1 秒;
    3. 重新启动 Windows 后:~21 秒;
  2. 现有客户端实例对服务的后续调用:~0.1 秒

运行具有 512 MB RAM 的 Windows 2003 Server SP2。

我不确定 WCF 中是什么触发了这种性能变化。

于 2011-01-25T15:13:52.440 回答