2011-01-25 16 views
2

Crystal Reports(XI)がWCFサービスでホストされているアプリケーションで、パフォーマンスの問題が発生しています。パフォーマンスプロファイラの助けを借りて、ReportDocument.Loadへの呼び出しが10秒以上かかることがわかりました。深く掘り下げて考えると、問題の最も重大な点は、ReportClientDocumentClass.Open-methodであり、これは10秒間を要し​​ます。Crystal Reports - ReportDocument.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の呼び出しは、「ハング」です。これを引き起こす可能性のあるアイデアは?

私は Client > WCF > Service呼び出しは、次のパフォーマンス特性を持っていることをプロファイリングしていますWCFサービスに気づいた

答えて

2

元の問題は、プリンタに特定されました。 Open-methodを呼び出すと、レポートの設計時に使用されたプリンタに接続しようとします。レポートが配布されたとき、プリンタはもう使用できなくなりましたが、Crystalに15秒ほどかかることに気付きました。

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

0

:実行していない後

  1. :クライアントの新しいインスタンスによるサービスへ

    1. 最初の呼び出しを1-2分のクライアント:〜12-15秒;
    2. クライアントの前のインスタンスを閉じた後:〜1.1秒;
    3. Windowsの再起動後:約21秒。クライアントの既存のインスタンスによるサービスへ
  2. 以降の呼び出し:〜0.1秒

512 MBのRAMを搭載したWindows 2003のサーバーのSP2を実行しています。

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