MSDN の記事Use AppCmd.exe to Configure IIS at Startupに従って、Azure で Web API 用に JSON 圧縮を構成しました。
私は自分のロールを公開してテストを開始しましたが、Fiddler によるとすべてが順調です。
リクエスト ヘッダーの例を次に示します。
GET http://x.cloudapp.net:8080/api/xyz HTTP/1.1
Accept: application/json
Host: x.cloudapp.net:8080
Accept-Encoding: gzip
応答ヘッダーの例を次に示します。
HTTP/1.1 200 OK
Cache-Control: no-cache
Pragma: no-cache
Content-Type: application/json; charset=utf-8
Content-Encoding: gzip
Expires: -1
Vary: Accept-Encoding
Server: Microsoft-IIS/8.0
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET
Date: Thu, 18 Jul 2013 22:27:38 GMT
Content-Length: 2472
数回の Web API 呼び出し後 (6 秒後など) に、すべての応答が圧縮されなくなります。
リクエストヘッダー:
GET http://xyz HTTP/1.1
Accept: application/json
Host: sp-test-server2012.cloudapp.net:8080
Accept-Encoding: gzip
応答ヘッダー:
HTTP/1.1 200 OK
Cache-Control: no-cache
Pragma: no-cache
Content-Type: application/json; charset=utf-8
Expires: -1
Server: Microsoft-IIS/8.0
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET
Date: Thu, 18 Jul 2013 22:27:44 GMT
Content-Length: 16255
2 番目の応答でContent-Encodingが欠落していることに注意してください。
そのため、圧縮された数百の呼び出しがあり、残りのほとんどは圧縮されていません。時々、別の応答が圧縮されていることがわかります。または、しばらくテストを停止してから再開すると、圧縮が再び開始されるようです。
IIS 8 の圧縮は「抑制」されていますか? たとえば、CPU がほぼ限界に達した場合、IIS は圧縮を停止しますか?
Azure で WebRole を監視すると、高負荷テスト中に CPU 使用率が 90% を超えることがあります。これが結果の圧縮の欠如と相関しているかどうかを判断するのは困難です. メモリ使用量はまったく問題にならないようです。
これをより信頼性が高く、予測可能にしたいと思います!