장애 현상
부하가 증가하면 웹서버(windows2003r2, iis 6.*)의 속도가 매우 저조해진다.
부하가 있는 상태에서도 뒷단에 존재하는 웹로직 서버(windows2003r2)는 정상적인 속도가 나온다.
부하가 증가한 상태에서 access로그를 보면 웹로직에서 응답을 늦게 준것 처럼 속도가 매우 저조한 수치를 보인다.
해결
** IIS 튜닝
MaxEndPointConnections : LONG
Range: 0 - unlimited Default: 200 ======> 1000
이 값은 네트워크 Endpoint에 모일 수 있는 Listen Socket의 최대 값을 명시합니다. 한 포트에 연결될 수 있는 Connection 의 수를 말합니다.
설정 방법 : C:\Inetpub\AdminScripts\adsutil.vbs SET w3svc/MaxEndPointConnections 1000
=======================
ServerListenBacklog : INTEGER
Range: 0 - unlimited Default: 200 ======> 1000
이 값은 queue될 수 있는 미활성된 Socket의 수를 명시합니다.
설정 방법 : C:\Inetpub\AdminScripts\adsutil.vbs SET w3svc/ServerListenBacklog 1000
=======================
** 윈도우 튜닝
MaxPoolThreads : REG_DWORD
Range: 0 - 0xFFFFFFFF Default: 10 ======> 20
MaxPoolThreads는 Processor 마다 생성될 수 있는 pool threads의 수를 명시합니다.
이 값은 inetinfo process의 i/o thread로 일반적으로 20이상의 값을 설정하는 것은 좋지 않습니다.
아래의 레지스트리에서 설정 :
[HKEY_LOCAL_MACHINE]\SYSTEM\CurrentControlSet\Services\InetInfo\Parameters
=======================
MaxUserPort
서버에 연결되는 Port의 숫자가 5000개 이상 (Exchange 60000) 될 경우 서버에서 네트워크 장애가 발생될 수 있음.
일반적으로 WAS와 연결되는 Windows 서버나 Exchange 서버에서 주로 발생됨.
레지스트리 위치: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
유효한 범위: 5000~65534
값 이름 : MaxUserPort
값 종류: DWORD
기본값: 5000
추천 값: 65534
======================
TcpTimedWaitDelay를 설정
TCP 파라미터는 물론 플랫폼 별로 많은 파라미터가 존재하지만, Windows에서의 TcpTimedWaitDelay 와 Solaris의 tcp_time_wait_interval 은 동일한
파라미터로서, 커넥션이 종료 되었을 때 TIME_WAIT 상태로 머물게 되는 시간을 설정한다.
이 값의 디폴트는 4분으로 짧은 시간에 많은 클라이언트가 접속을 하면 네트웍(Network) 퍼포먼스에 영향을 줄 수 있기 때문에 60초로 제한을 두도록
권고한다.
레지스트리 위치 : HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Tcpip\Parameters
유효한 범위 : 0\30~300초
값 이름 : TcpTimedWaitDelay
값 종류: DWORD
기본값: 240초
추천 값: 60
* 특히 플러그인 옵션 적용을 위해 IIS 웹서버 파라미터를 수정하고 반드시 IIS Admin 서비스도 재시작을 하여야 제대로 설정이 되니 유의한다.
* 테스트를 위해 Debug=ALL옵션을 적용한 상태에서 그냥 나오면, 반드시 고객에게서 전화를 받으니 이 옵션도 테스트 후에 반드시 제거하자.
[출처] [IIS 튜닝]부하가 증가하면 IIS 웹서버가 느려진다|작성자 부탄가스