1. 처리량(Transaction Per Second)
- 클라이언트의 요청부터 결과까지 걸리는 총 시간을 말하고 이것을 TPS로 나타낸다.
2. 응답 시간(Response Time)
- 총 TPS의 시간은 응답 시간의 관점으로 봤을때 두 가지로 나뉘게 된다.
- 응답 시간은 아래의 두 가지로 분류가 가능하다
- 처리 시간(Processing Time) : 실제 서버가 요청을 처리하는데 걸린 시간
- 대기 시간(Latency Time) : 클라이언트와 서버간에 데이터를 주고 받는데 걸린 시간
TPS를 높이는 법
그렇다면 우리의 목표는 TPS를 높이는 것인데 어떻게 높일 수 있을까?
- 서버를 늘린다.
- 단순히 서버가 많아지면 많아질수록 TPS는 비례하여 증가할 것이다.
- 쓰레드 풀과 DB 커넥션 풀을 늘리는 것이다.
- 쓰레드 풀 5, 처리 시간 1초 → TPS 5
- 쓰레드 풀 10, 처리 시간 1초 → TPS 10
하지만 무작정 무언가를 증설하고 늘리는 것은 부하를 오게 만드는 이유가 될 수 있다.
쓰레드 풀 or 서버 증설 → DB 쿼리 시간 증가 → 처리 시간의 증가 → TPS 하락
이번엔 거꾸로 생각해보자 증설과 증가를 통해 DB의 부하를 발생시켰으니 DB쿼리문 혹은 로직을 통해 처리시간 자체를 줄인다면 얼마나 좋을까? 똑같은 서버의 갯수와 쓰레드 풀의 갯수로 더욱 좋은 TPS를 만들어 낼 수 있을 것이다.
처리 시간 줄이기
- DB - 쿼리를 튜닝, 캐시 서버 개설, 장비 개선(Scale Up)
- API 호출 - 캐시 서버 개설, 호출을 제거하기(메세징 이용)
- 데이터 집계 / 계산 - 미리 계산하여 캐시나 DB에 보관(통계)
대기 시간 줄이기
우리가 TPS를 높이기 위해 처리 시간을 줄이는 것은 매우 중요하다 하지만 처리 시간만 줄일 수 있을까? 아니다 대기 시간 또한 줄일 수 있다 어떻게 하는 걸까
- 대역폭 대역폭이 작으면 클라이언트 개수가 증가할 때 주고 받는 속도가 급격히 느려진다. ex) 고속도로가 좁은데 지나가려는 차량이 늘어나면 자연스레 느려지는 것과 같다.
- 응답 크기 줄이기 : 응답 압축, 이미지 파일 크기 줄이기
- 트래픽 분리하기 : 정적 파일을 CDN을 통해 제공
- 대역폭 늘리기 : 이는 비용이 너무 많이 발생한다.
'테스트' 카테고리의 다른 글
JMeter를 이용한 과부하 테스트(동시 접속자 테스트) (0) | 2023.09.07 |
---|---|
성능 테스트, 부하 테스트, 스트레스 테스트 (0) | 2023.09.07 |