네트워크 대역폭에 제한이 있거나, 낮은 대역폭을 확보한 클라이언트 컴퓨터의 경우에 Http압축은 훌륭한 대안이 될수 있다. Http 압축은 내용이 계속 변경되는 동적파일보다는 내용변경이 거의 없는 정적파일에 훨씬 유효하다.
IIS는 클라이언트에서 요청된 파일중 압축대상에 해당되는 파일인지 확인후에 임시압축 디렉토리에서 압축파일 존재여부를 확인후 이미 압축된 파일이 존재하면 압축된 파일을 클라이언트에 보내고, 없다면 압축을 새로 한다.
동적파일의 경우 컨텐츠 내용이 자주 변경이 되므로 압축을 할 경우 CPU리소스를 자주 소모하게 되므로 성능비용이 높아 그다지 실익은 없다. 물론 CPU 자원이 넉넉하다면 상관없지만...
5-KB 크기 요청에 따른 네트워크 트래픽 오버헤드 | |||||
Traffic Type | Bytes Sent | ||||
TCP Connection | 180 (approx.) | ||||
GET Rquest | 256 (approx.) | ||||
5-KB File | 5,120 | ||||
Protocol overhead | 1,364 (approx.) | ||||
Total |
5KB 크기를 요청시 유발되는 트래픽량이다. 이것은 실제 데이터외에 매 요청마다 추가적인 오버헤드가 발생한다.
Http 압축은 운영중인 서버에 적용시에는 그 효과를 필히 측정해야 한다.
압축으로 인한 네트워크 트래픽 감소와 압축과정에서 소모되는 CPU 소모비용을 측정하여, CPU 점유율이 상당히 높아질경우는 압축에 따른 실익 여부를 판단해야 한다.
Http 압축모듈은 %windir%\system32\inetsrv\gzip.dll 을 이용하며, 메타베이스 경로 에서 파일 확장자는 수정이 가능하다.
다음은 test.html (1,073바이트) 이 $^_gzip_C^^INETPUB^WWWROOT^TEST^TEST.HTML(508 바이트) 로 압축된 경우다. 압축률을 계산해 보면 약 50% 정도로 높다. 압축률 만큼 네트워크 대역폭을 줄일수 있음을 알수 있다.
압축 파일 확장자 수정은 Adsutil.vbs 및 Metaedit, MetabaseExplorer를 이용하여 변경하면 된다. 물론 IIS6의 경우는 \Windows\System32\inetsrv\MetaBase.xml 에서 직접 수정이 가능하다.
Http 압축 메타메이스 값 | |||||
Key | Description | ||||
HcDoDynamicCompression | 응용프로그램파일 압축 여부 | ||||
HcDoStaticCompression | 정적파일 압축여부 | ||||
HcDynamicCompressionLevel | 압축레벨 (1~10) | ||||
HcFileExtensions | 정적파일 확장자 | ||||
HcScriptFileExtensions | 동적파일 확장자 |
Adsutil.vbs set W3Svc/Filters/Compression/GZIP/HcFileExtensions "htm" "html" "txt" "ppt" "xls" "xml" "pdf" "xslt" "doc" "xsl" "htc" "js" "css"
Adsutil.vbs set W3Svc/Filters/Compression/DEFLATE/HcFileExtensions "htm" "html" "txt" "ppt" "xls" "xml" "pdf" "xslt" "doc" "xsl" "htc" "js" "css"
Adsutil.vbs set W3Svc/Filters/Compression/GZIP/HcScriptFileExtensions "asp" "dll" "exe" "aspx" "asmx" "ashx"
Adsutil.vbs set W3Svc/Filters/Compression/DEFLATE/HcScriptFileExtensions "asp" "dll" "exe" "aspx" "asmx"
그럼 실제 Http 압축의 효과를 보도록 하자.
위 이미지는, 필자가 운영하는 모회사의 웹서버인 Windows Server 2003 의 작업관리자의 네트워킹탭에서 볼수 있는 해당 네트워크 디바이스의 실제 트래픽이다.
위 서버는 100Mbps 허브에 물려 있으므로, 이더넷에 할당된 대역폭 역시 100Mbps 이다. 세로측 차트가 100% 이므로 1% 당 1Mbps 로 보면 쉽게 인식이 된다.
실제 압축하지 않은 상태에서의 트래픽은 보는바와 같이 약 70~80Mbps 수준이나, Http 압축을 적용하면 그 압축결과에 의해서 약 20~30Mbps 수준으로 낮아진다.
압축률을 대략 보면,. 약 50~60% 수준이며, 압축에 따른 CPU 사용량은 거의 변화가 없어서 아주 좋은 효과를 내고 있는 것이다.
06-ts.gif
06-HTTPCompression.gif
06-HTTPCompression_File.gif
06-iis-comp-2.png
댓글 없음:
댓글 쓰기