서버 성능 테스트에 대해 공부한 내용이다.
목차:
1. 서버 성능 테스트의 종류
2. 주요 용어
3. 좋은 서버 성능이란
1. 서버 성능 테스트의 종류
서버 성능 테스트(Performance Testing)에는 하위에 여러 종류가 있다.
아래 이미지가 이를 잘 보여준다.
이 중에서 보통 많이 수행하는 테스트는 다음 4가지라고 한다.
부하 테스트 (Load Test) — 특정한 부하를 제한된 시간을 두어서 웹 어플리케이션에 이상이 없는지 파악하는 테스트
지속성 테스트 (Endurance Test) — Load Test와 유사하나 오랜 기간 부하를 줘서 하는 테스트.
스트레스 테스트 (Stress Test) — 부하의 임계점을 찾고, 장애상황에서의 시스템 반응을 보고 잘 복구되는지 확인하기 위해 점진적으로 부하를 올리면서 진행하는 테스트
최고 부하 테스트 (Peak Test) — 일순간 감당할 수 없을 만큼 부하를 주고, 웹 어플리케이션이 죽지 않고 제대로 동작하고 회복하는지 보는 테스트. 수강신청이나 이벤트 등 대규모 상황을 대비하기 위해 진행
위 테스팅 방법의 구분은 Software Testing Class 의 정의를 기반으로 합니다.
다른 구분 방법도 있으며, 실제 테스팅 수행시 사용할 테스팅 구분 기준을 명확히 한 뒤 수행하면 되겠습니다.
이에 대해 본문 출처 항목의 맨 아래 게시물을 참조해주세요.
2. 주요 용어
Users
서버를 사용중인 사람을 의미한다.
2가지로 나뉘는데, 주의해야 한다.
Concurrent User - 웹 페이지를 띄어놓은 사용자처럼, 언제든지 부하를 줄 수 있는 사용자.
Active User - 메뉴나 링크를 누르고 결과가 나오기를 기다리는 등 실제로 서버에 부하를 주고 있는 사용자.
Active User가 현재 트랜잭션을 발생시키므로 좀 더 중요하다고 할 수 있다.
TPS
TPS (Transaction per second)는 성능 테스팅의 주요 지표로 활용된다.
TPS는 일정 시간동안 얼마나 많은 요청을 처리할수 있는지를 나타낸다.
Time
서비스 사용중의 시간을 의미한다.
Time 역시 관점의 차이가 있다.
아래의 이미지가 Time을 잘 설명한다.
Request, Resposne time 사이의 Think Time은 Response를 받은 뒤 사용자가 이를 이용한 작업(ex: 게시글 읽기)을 하는 시간이다.
좀 더 자세히 보면, 클라이언트의 네트워크를 열고 닫는동안의 시간이 성능 테스트의 대상 구간이 된다.
3. 좋은 서버 성능이란
어떤 서비스의 "성능이 좋다" 라고 말할때는 2가지 관점이 있을수 있다:
사용자 - 빠른 Response Time
개발자 - 서버가 원하는 만큼의 사용자를 감당 가능
위를 모두 만족해야 한다.
차례대로 그래프를 보면
1. 유저가 늘어나면 TPS가 늘어나다가 한계를 만난다
서버가 현재 요청에 대해 최대 100의 TPS를 가질수 있다고 치면,
유저가 늘어나면 트랜잭션이 늘어나지만,
한계를 넘어선 요청 수가 오는 지점부터는 TPS가 늘어나지 않는다.
그렇다고 해서 서버는 최대치의 성능을 사용중이므로 거기서 줄어들진 않는다.
이 지점을 Saturation Point라고 한다.
하지만 이건 이상적으로 튜닝 된 서비스의 상황에서의 예시이다. 이 지점을 지나면 TPS가 감소하기도 한다.
2. 유저가 늘어나면 Time은 조금씩 늘어나다가 빠르게 늘어난다.
3. TPS가 증가하다보면 특정 지점에서 Time이 급증한다.
TPS, User, Time 의 관계를 항상 생각해야 한다.
임계점(Satuartion Point)에 도달하면, 요청에 대한 Queuing time이 급증한다.
이렇게 Time이 급증한 상황에서는,
요청의 선두주자, 후발주자의 대기시간 차가 매우 커지게 된다.
실망해버린 후발주자가 서비스를 이탈하는걸 원하지 않는 시스템이라면,
후발주자를 중점으로 테스팅을 해야한다.
참고:
https://www.whatap.io/ko/blog/14/
https://blog.imqa.io/load_test1/
https://techblog.woowahan.com/2627/
https://engineering-skcc.github.io/performancetest/Performance-Testing-Terminologies/
'Dev > 인프라' 카테고리의 다른 글
nGrinder 이용한 서버 성능 테스트 (0) | 2022.01.31 |
---|