JSON内容压缩在使用Azure WebRole一段时间后停止工作
在这篇MSDN文章之后,我在Azure中为我的Web API配置了JSON压缩 我发布我的角色并开始测试,根据Fiddler的说法一切都很好 以下是一个示例请求标头:JSON内容压缩在使用Azure WebRole一段时间后停止工作,azure,azure-web-roles,iis-8,http-compression,Azure,Azure Web Roles,Iis 8,Http Compression,在这篇MSDN文章之后,我在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 GET http://xyz HTTP/1.1 Accept: application/
GET http://x.cloudapp.net:8080/api/xyz HTTP/1.1
Accept: application/json
Host: x.cloudapp.net:8080
Accept-Encoding: gzip
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
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
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
只需几次Web API调用(如6秒后),所有响应都不再压缩
请求标头:
GET http://x.cloudapp.net:8080/api/xyz HTTP/1.1
Accept: application/json
Host: x.cloudapp.net:8080
Accept-Encoding: gzip
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
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
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
注意第二个响应中缺少的内容编码
因此,我得到了几百个被压缩的调用,然后剩下的大部分被解压。我时不时地看到另一个响应被压缩。或者,如果我停止测试一段时间,然后恢复,似乎压缩又开始了
IIS8中的压缩是“限制”还是什么?比如说,如果CPU快用完了,IIS会停止压缩吗
在Azure中监视我的WebRole时,在高负载测试期间,我的CPU使用率可以超过90%。很难说这是否与结果缺乏压缩有关。内存使用似乎根本不是问题
我希望这是更可靠和可预测的 嗯,显然昨天我的谷歌Fu让我失望了。我今天找到了答案,IIS确实会或不会根据CPU使用情况动态压缩内容 有两种设置可控制动态压缩。其中一个指定禁用它的时间:
dynamicCompressionDisableCpuUsage
,默认为90%。另一个指定何时重新启用它,默认为50%
您学到的东西。本文可能有助于强制压缩: 当然,在高负载情况下,他们会对CPU时间收费