Visual Studio 2013 Ultimate 버전에는 성능 및 부하 테스트 도구가 포함되어 있다.
물론 에이전트와 컨트롤러는 또 별도로 다운로드 받아서 설치해야 하긴 하지만.
일단 현재 시점 기준으로 최신 업데이트는 Update 5.
이전 버전 사용하면 뭔지 모를 버그로 제대로 테스트가 되지 않을 수도 있으니 최신 버전 필수.
>> 다운로드: Agents for Microsoft Visual Studio 2013 Update 5
제목엔 에이전트만 써져 있지만 에이전트와 컨트롤러가 다 들어있다.
그런데 문제는(나만 겪은 문제일수도 있지만), 컨트롤러는 업데이트를 해도 제대로 업데이트가 안되어서
기존 설치 제거 후 새로 설치해야 했다. 무슨 이런...
더 문제는,
Visual Studio 2013을 Update 5로 업데이트하지 않으면 컨트롤러를 컨트롤 할 수 없다는 점.
그래서 Visual Studio 2013도 업데이트해야 한다.
>> 다운로드: Microsoft Visual Studio 2013 Update 5
모두 업데이트했으면 다시 구성을 처음 하듯 잘 해줘야 하고...;;
본격적으로
직접 겪은 문제를 해결하는 와중에 찾아낸 팁을 쓰자면,
1.
부하 테스트를 하다 보면 한참 열심히 부하를 늘려 가다가
어느 순간 에이전트에서 갑자기 아래와 같은 에러를 발생하면서 제대로 테스트가 되지 않는 경우가 있다.
예외 OutOfMemoryException Exception of type 'System.OutOfMemoryException' was thrown.
이후부터는 메모리 부족 에러는 절대 발생하지 않을 것이다.
유효성 검사 규칙 오류 ValidateResponseUrl The value of the ExpectedResponseUrl property 'https://sso.abc.com/SSO/AuthWeb/Logoff.aspx' does not equal the actual response URL 'https://sso.abc.com/SSO/STS/ConnectSTS.aspx'. QueryString parameters were ignored.
쿠키를 사용한 인증의 경우, 이전 테스트 요청에서 인증하거나 로그아웃하는 동작이 다른 테스트에 영향을 미쳐서
인증이 되어 있음에도 인증 받지 못한 것처럼 튀거나, 인증도 하지 않았는데 인증된 것처럼 동작하는 등
상식적으로 이해할 수 없는 이상한 현상이 발생한다.
해결 방법은 의외로 또 에이전트 컴퓨터의 레지스트리 설정 방법이다.
IE 8 버전 이후부터는 웹 브라우저(또는 WebRequest) 요청에서 서로 다른 창(또는 쓰레드)들이
기본적으로 세션이나 쿠키를 공유하도록 설계되어 있는데, 이것을 끊어서 공유되지 않도록 하는 방법이다.
위 그림처럼 HKCU\Software\Microsoft\Internet Explorer\Main에 "FrameMerging"이라는 DWORD값을 생성해주면 된다. 물론 값은 0 (disabled) 이다.
이후부터는 거짓말처럼 위와 같은 유효성 검사 규칙 오류가 사라진다.
진짜다!
위 방법으로도 안 된다면,
아래의 방법으로 처리해야 한다.
1. 테스트 샘플을 유일한(Unique) 사용자로 테스트할 수 있을 만큼 충분한 숫자로 준비한다.
예를 들면, 2만 명 회사에서 부하 테스트로 30%인 6천 명을 가정한다면, 최소 1만 2천 명의 샘플을 준비한다.
2. 오류 발생 시 계속 진행하지 않고 중단하도록 구성한다. 보통 오류는 인증의 문제로 발생하게 되는데
인증되지 않은 경우 계속 진행해 봤자 계속 오류가 발생할 수밖에 없다.
이상의 두 가지 방법을 적용하면, 비록 완전히 오류가 발생하지 않도록 할 수는 없더라도
어느 정도 테스트를 할 수 있을 만큼은 커버가 된다.
===> 위 2번 문제의 원인은 Distributed Cache 때문인 것으로 보인다(99%).
현재 테스트 환경에서는 AppFabric 분산 캐시가 사용되고 있는데, 이것이 적절히 반응하지 않으면, 즉 캐시 값을 제 시간에 읽지 못하면 인증을 튕겨버리게 만든다고 한다. 부하 테스트 중이므로 당연히 제 시간에 요청이 될 리는 만무. 타임아웃 값(기본값: 20ms) 을 적절히 늘려주면 된다.
>> 참조1: https://technet.microsoft.com/en-us/library/jj219613.aspx
>> 참조2: https://www.dmcinfo.com/latest-thinking/blog/id/8657/fix-sharepoint-2013-distributed-cache-timeouts
끝.
'Tech: > Server·IIS' 카테고리의 다른 글
Microsoft CA 서버에서 인증서 유효기간 늘리기 (0) | 2016.08.18 |
---|---|
SQL Server sa 계정이 잠겨서 로그인할 수 없는 경우 (0) | 2016.08.12 |
"이 콘텐츠를 프레임에 표시할 수 없습니다" 오류 해결법 (0) | 2015.09.07 |
IIS에서 HTTP를 HTTPS로 강제 전환시키는 몇 가지 간단한 방법 (1) | 2015.07.21 |
웹페이지에 Lync Presence 표시하기, 대화창 띄우기 등 (0) | 2015.06.11 |