2

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% を超えることがあります。これが結果の圧縮の欠如と相関しているかどうかを判断するのは困難です. メモリ使用量はまったく問題にならないようです。

これをより信頼性が高く、予測可能にしたいと思います!

4

2 に答える 2

3

どうやら昨日、Google Fu に失敗したようです。今日答えを見つけました。IIS が CPU 使用率に基づいてコンテンツを動的に圧縮するかしないかは事実です。HTTP 圧縮

動的圧縮を制御する設定は 2 つあります。1 つは、いつ無効にするかを指定しdynamicCompressionDisableCpuUsageます。デフォルトは 90% です。もう 1 つは、いつ再有効化するかを指定しdynamicCompressionEnableCpuUsageます。デフォルトは 50% です。

あなたが学ぶこと。

于 2013-07-19T22:47:14.163 に答える
0

この記事は、圧縮を強制するのに役立つ場合があります。

ASP.NET Web API GZip 圧縮 ActionFilter と 8 行のコード

もちろん、負荷が高い状況では CPU 時間に対して課金されます。

于 2014-07-17T09:16:02.107 に答える