2

Crystal Reports(XI)がWCFサービスでホストされているアプリでパフォーマンスの問題が発生しています。パフォーマンスプロファイラーの助けを借りて、ReportDocument.Loadの呼び出しに10秒以上かかることがわかりました。さらに深く掘り下げると、最も問題となるのはReportClientDocumentClass.Openメソッドにあります。これには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

元の問題はプリンターに特定されました。Openメソッドの呼び出しは、レポートの設計時に使用されたプリンターに接続しようとします。レポートが展開されると、プリンターは使用できなくなりましたが、Crystalがそれに気付くまでに約15秒かかりました。

レポートを開き、プリンタを使用しないように設定すると、この特定のパフォーマンスの問題が修正されました。

于 2011-02-28T15:56:28.283 に答える
0

Client > WCF > ServiceプロファイリングしているWCFサービスで、呼び出しに次のパフォーマンス特性があることに気付きました。

  1. クライアントの新しいインスタンスによるサービスへの最初の呼び出し:
    1. クライアントを1〜2分間実行しなかった後:約12〜15秒。
    2. クライアントの前のインスタンスを閉じた後:約1.1秒。
    3. Windowsの再起動後:約21秒。
  2. クライアントの既存のインスタンスによるサービスへの後続の呼び出し:〜0.1秒

512MBのRAMを搭載したWindows2003ServerSP2を実行しています。

WCF内で何がこのパフォーマンスの変動を引き起こしているのかわかりません。

于 2011-01-25T15:13:52.440 に答える