3

これが以前に尋ねられた場合は申し訳ありませんが、検索しても答えが見つかりません

最大 100 のインスタンスを提供する WCF サービスがあります。クライアントは 10,000 ありますが、呼び出しは非常に高速です。

私たちが気付いた唯一のパフォーマンス オーバーヘッドは、インスタンスへの最初の呼び出しです。たとえば、いずれかのインスタンスが最初に呼び出されるとき (またはリサイクル後) は、他の呼び出しと比較して顕著な遅延があります。

IIS の起動時に 100 個のインスタンスを「起動」する方法はありますか? したがって、このオーバーヘッドを削除しますか?

サービスで現在「アクティブ/インスタンス化」されているインスタンスの数を確認する方法はありますか?

どうもありがとう、デイブ。

4

3 に答える 3

2

起動後、サーバーからリモート インターフェイス経由でサービスを利用できます。

または、カスタム ホスティングを使用している場合は、サーバーの起動時にサービス クラスのインスタンスを ServiceHost に渡すことができます。

IIS 内でホストしている場合は、CustomHostFactory が必要です。これを行う方法については、かなり良い記事がここにあります。http://msdn.microsoft.com/en-us/library/bb332338.aspx

インスタンスを追跡するという点では、サービス クラス内の参照カウントをインクリメント/デクリメントすることができます。

于 2010-09-06T10:37:15.630 に答える
1

IIS 7.5でホストしている場合は、必ずApplication Warmup Moduleを確認してください。

于 2010-09-06T10:41:24.453 に答える
0

アプリケーションの起動時に 100 個のインスタンスを起動することはできません。シングルトン サービス = すべてのリクエストに対して 1 つのインスタンスがある場合にのみ可能です。このシナリオでは呼び出しごとのインスタンス化を使用しているため、クライアントがサービスを呼び出すたびにインスタンスが作成され、呼び出しの処理後に破棄されます。

アプリケーションをウォームアップするには、エンクリコが提案するモジュールを使用します。IIS 7.5 を使用しない場合は、別のオプションがあります。サービスに ping を実行するカスタム コンソール アプリケーションを作成します。このアプリケーションを Windows スケジューラでスケジュールします。

実行中のインスタンスの数を追跡するには、パフォーマンス カウンターを使用できます。WCF がすぐに使用できるカウンターを提供しているかどうかはわかりませんが、いつでも独自のカウンターを作成して、カスタム ServiceHost クラスで操作することができます。

于 2010-09-06T11:16:01.697 に答える