2012-02-16 13 views
3

私は自分のサイトがホスティングIIS上でホストされています。サイトには、WCFサービスを呼び出す必要がある機能があり、結果を返します。問題は、サイトがWCFサービスを呼び出す処理を別のWebサイト呼び出しがフリーズしていて、コンテンツを高速に返さないことです(これは静的なコンテンツです)。私は2つのクロムインスタンスを異なるimacrosのスクリプトでセットアップしました。これはwcfサービスを要求するページを呼び出し、もう1つのページは静的なコンテンツです。だからここでは、wcfサービスを要求する最初のページがフリーズし、別の1ページもフリーズし、最初にリリースされたときに2番目のページも解放されることがわかります。IISのワーカースレッドの問題

私はすぐに静的なコンテンツを取得することが可能に得るために何かを行う必要があり、私は私のWeb.Configで何かを再設定必要かやるようにしてください。

+0

WebサイトはどのバージョンのIISで動作していますか? –

+0

IIS 7.5、共有ホスティングです。 – kseen

+0

これは、2つのページ要求(サービスページと静的ページのいずれか)でのみ発生しますか、保留中の要求が複数ある場合は負荷がかかりますか? – Ragoczy

答えて

2

は、私はここで2つの別々の問題があることを考える:

  1. はなぜWCFサービスの凍結
  2. を使用しているページはなぜ静的コンテンツ・ページがページで

を凍結しないんその一般的な問題は、WCFクライアントが閉じられていないことです。デフォルトでは、10分のWCF接続があり、タイムアウトは1分です。最初の10回のコールはうまく行きます(2秒間実行すると)、11回目のコールが来ます.WFW接続がないため、接続がタイムアウトして使用可能になるまでに58秒待たなければなりません。

なぜ静的ページがフリーズするのですか。クライアントがサイトへの接続を1つしか許可しない場合、wcfサービスを含むページの要求が完了するまで静的ページの要求は送信されません。

IISログを調べて、IISが要求の処理にどのくらいの時間を要しているかを確認する必要があります。

1

私は、これは、スレッドの問題であると言うでしょう。このMSDN KB記事は、どのようにチューニングASP.NETのスレッドの動作をする上でいくつかの提案があります:

http://support.microsoft.com/kb/821268

記事から - ...あなたは最高のフィット感を調整するあなたのMachine.configファイルの次のパラメータをすることができますあなたの状況:

  • maxWorkerThreads
  • minWorkerThreads
  • maxIoThreads
  • minFreeThreads
  • minLocalRequestFreeThreads
  • MAXCONNECTION
  • executionTimeout

成功し、これらの問題を解決するには、次の手順を実行します。

  • リミット同じで実行できるASP.NET要求の数CPUあたり約12の時間になります。
  • 許可Webサービスのコールバックが自由のThreadPool内のスレッドを使用します。
  • MaxConnectionsをパラメータに適切な値を選択します。使用しているIPアドレスとAppDomainsの数に基づいて選択します。

等...

+0

私は共有されたウィンドウのホスティングをしています。自分のweb.configファイルだけを調整できるようです。あなたのアプローチはこの条件に合っていますか? – kseen

+0

私はそうは思わない。 machine.configでこれらの設定を変更する必要があります。 MSDN(http://msdn.microsoft.com/en-us/library/7w2sway1.aspx)から:* ProcessModelセクションは、Machine.configファイル内でのみ設定できます。* –

+0

これを設定するにはどうすればよいですか?[Webサービスコールバックを許可する]スレッドプール内のスレッドを自由に使用することができます。項目?ご意見をお聞かせください。 – kseen

0

あなたはAppFabricのを使用しようと、あなたのWCFサービスhttp://msdn.microsoft.com/en-us/windowsserver/ee695849

+0

AppFabricが正しく機能しない場合、IISの下でWCFサービスがホストされている場合にのみ役立ちますか? – kseen

+0

はい。あなたは正しいです。 WCFサービスはどこにホストされていますか?可能であれば、Webサービスをデュプレックスとして呼び出し、すぐに応答を待つことができます。 – marvelTracker

+0

コンソールアプリケーションでホストされるセルフホストWCFサービスです。二重通話は私が望むほどフィットしません。 – kseen

1

と間違っているものを見ることができ、このようなシナリオを考えてみましょう:あなたは、あなたのアプリの変更をIISに要求を行う際に、削除またはApp_Dataフォルダの外にファイルを作成します。これは、アプリケーションのbinフォルダに誤って入れられたログファイルになることがよくあります。ファイルシステムの変更によって、AppDomainがIISによって再読み込みされるのは、アプリケーションが変更されたと考えられるため、経験豊富な遅延です。これはあなたの問題に当てはまるかもしれませんが、ASP.NETアプリケーションではよくある間違いです。まあ

1

、多分問題はありません...

それはちょうど、ブラウザの同一ドメインの同時要求の制限かもしれません。最初のページ(WCFページ)に要求を終了していないブラウザまで
は、それが2ページ(静的)に要求を送信しません。
各ページに使用異なるブラウザ(例えばクローム/ Firefoxの):

はこれを試してみてください。
シークレットウィンドウ(Ctrl + Shift + N)でクロムの2番目のページを開きます。
または、別のコンピュータから各ページにアクセスしてみてください。

関連する問題