2017年11月28日火曜日

HTTP ERROR 503.2 同時要求の制限を超えています。 appConcurrentRequestLimit プロパティに、現在の同時要求数よりも低い値が設定されています。IIS 7.0、IIS 7.5、および IIS 8.0 では appConcurrentRequestLimit プロパティの値を超えた数の同時要求は許可されません。

エラーは、IISの同時接続数のようなので、上限をいじるとよいかと思います。

注意点として、requestQueueLimitの変更だけでは、別の上限(MaxConcurrentRequestsPerCPU)に引っかかる可能性がるので、留意が必要そうです。

1)アプリケーションプールのキュー長さを1000から65535に増やす
        Application Pool>詳細設定>詳細>全般>キューの長さ

2)Machine.Configの変更
     ProcessModel要素のrequestQueueLimitプロパティを100000に増やす

ASP.NET の要求のキュー制限を変更するには
1.hidemaru %systemroot%\Microsoft.Net\Framework64\v2.0.50727\CONFIG\machine.config
3.↓に属性を追加する
<system.web>
<processModel autoConfig="true"/>

<system.web>
<processModel autoConfig="true" requestQueueLimit="100000"/>

3)↓の実行によってappConcurrentRequestLimitが10000に増加させる
 
    C:\Windows\System32\inetsrv\appcmd.exe set config /section:serverRuntime /appConcurrentRequestLimit:100000

追記:デフォルト値の変更について(公式)
    https://blogs.msdn.microsoft.com/tmarq/2007/07/20/asp-net-thread-usage-on-iis-7-5-iis-7-0-and-iis-6-0/

    マイクロソフトの推奨は、
        CPUあたりの同時要求数をレジストリでいじる
        HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ ASP.NET \ 2.0.50727.0内のMaxConcurrentRequestsPerCPU

        >読んでいったら、.net 3.5からは、MaxConcurrentRequestsPerCPUもconfigに記載ができる。
        <system.web> 
            <applicationPool maxConcurrentRequestsPerCPU = "12" maxConcurrentThreadsPerCPU = "0" requestQueueLimit = "5000" /> 
        </system.web>

英語のエラーは、
HTTP Error 503.2 - Service Unavailable
The serverRuntime@appConcurrentRequestLimit setting is being exceeded.


1 件のコメント:

  1. 同様のエラーが発生し、このサイトにたどり着きました。
    レジストリを変えるのは怖いので、まずはアプリケーションプールのキュー長さだけ変更してみます。

    返信削除