パフォーマンス確認のために Application Request Routing (ARR) に適した設定を少しだけ探ってみました。結局 Nginx には余裕で負けたわけですが、試したメモとして残しておきます。
使用したのは A2 インスタンスの Windows Server 2012 R2 で、検証のためキャッシュはオフにしました。
基本的に上から順番に設定を追加・変更していった形となってます。
デフォルト
TcpTimedWaitDelay = 30 / MaxUserPort = 65530
reg add "HKLM\System\CurrentControlSet\Services\Tcpip\Parameters" /v TcpTimedWaitDelay /t REG_DWORD /d 30 /f netsh int ipv4 set dynamicport tcp start=1025 num=64506
queueLength = 65535
appcmd.exe set config /section:system.applicationHost/applicationPools /applicationPoolDefaults.queueLength:65535
appConcurrentRequestLimit = 100000
appcmd.exe set config /section:system.webserver/serverRuntime /appConcurrentRequestLimit:100000
この時点で CPU は 100% 張り付きっぱなしだったので、これ以上は難しい気がします。
おまけ : Memory cache duration = 30
おまけ : A4 (AMD 8 cores, 14GB)
おまけ : D4 (Intel 8 cores, 28GB)
Intel CPU が載った A4 でも試してみたところ、結果が明らかにおかしかったので Azure 界の抱かれたい男 No.1 に追試してもらいたい気分です。