30

.Net WCF サービスで次の例外が断続的に発生します。「 http://MyServer/TestWCF/MyService.svcにある HTTP サービスがビジー状態です。」

ここで何か不足していますか?

基本的な http バインディングを使用しており、WCF スロットリングを有効にしています。

<basicHttpBinding>
        <binding name="BasicHttpBinding_MyService" maxReceivedMessageSize="2147483647"
                 messageEncoding="Text" textEncoding="utf-16" sendTimeout="00:01:00" >
          <readerQuotas maxStringContentLength="2147483647" maxArrayLength="163840000"
                        maxDepth="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="16384" />
        </binding>

. . . .

<behavior name="MyWCFServices.MyServiceBehavior">
          <serviceMetadata httpGetEnabled="true" />
          <serviceDebug includeExceptionDetailInFaults="true" />
          <serviceThrottling
                    maxConcurrentCalls="16"
                    maxConcurrentInstances="2147483647"
                    maxConcurrentSessions="10"/>
        </behavior>

スロットリングは問題の解決に役立ちますか? また、トラフィックの多い Web サイトのスロットリングに推奨されるパラメーター値を教えてください。

4

8 に答える 8

10

maxConcurrentSessionsサービスのスロットリング動作のandmaxConcurrentCallsを標準値の 30 程度に増やしてみて、エラーが解消されるかどうかを確認してください。サーバーがビジー状態であるということは、サービスのスロットリング動作で許可されている領域よりも多くのリクエストが受信され、指定されたタイムアウト期間内にサービス インスタンスがサービスを提供できなくなったため、それらのリクエストが破棄されたことを示しているように思われます。

于 2009-05-23T08:46:52.717 に答える
9

私の答えは、アプリプールが稼働しているかどうかを確認してください。

このエラーは、キャッチされない例外がスローされたためにアプリ プールが停止したときに発生することがわかりました。

たとえば、カスタム構成セクションを考えてみてください。そこにエラーがあると、アプリが起動する前に失敗します。短時間にこれらが多すぎると、アプリ プールが殺されます。

于 2011-10-17T16:26:51.217 に答える
4

サービスが自分のアカウント (ID) で実行されている場合は、最近パスワードを変更した可能性があります。[詳細設定] で IIS アプリケーション プール用にパスワードをリセットする必要があります。ID ダイアログ ボックス。

于 2012-04-30T20:19:57.993 に答える
2

これは maxConcurrentSessions だけでなく、セッションの継続時間でもあります。

クライアントが接続を閉じない場合、タイムアウトするまで開いたままになります。その後、サーバーでのアクティビティがほとんどなく、maxConcurrentSessions の制限に達する可能性があります。

于 2009-06-23T19:58:25.883 に答える
2

Make sure you check the inner exception, too; during our deployments, we disable the application pool of a WCF web service, and clients start getting this error during that time:

System.ServiceModel.ServerTooBusyException: The HTTP service located at https://ourserver.x.com/path/service.svc is too busy. ---> System.Net.WebException: The remote server returned an error: (503) Server Unavailable.

So in this case an HTTP error 503 is being (mis?)interpreted as "server too busy".

于 2014-06-25T14:33:42.583 に答える
1

私が認識しているこの例外の唯一の原因は、セッションを使用していて、MaxPendingChannels スロットルに到達した場合です。デフォルトは 4 のようにかなり低い値です。より高い値 (たとえば 128) に設定することもできますが、単に再現したい場合は 1 に設定すると、負荷テストで表示されるはずです。

セッションの詳細については、http: //msdn.microsoft.com/en-us/library/ms733795.aspxを参照してください。

于 2011-04-16T23:02:37.607 に答える
1

このエラーに遭遇したところ、単純な構成の問題に要約されました。まったく同じポートと同じインターフェイス (モック サービス) でサービスを起動しました。意図した「元の」サービスを実行するために、適切なコマンド ライン スイッチを使用してサービスを実行しました。エラーはなくなりました。

于 2012-05-17T21:25:37.077 に答える