본문 바로가기

# Development/Methodologies

[성능 테스트] Throughput(TPS), Latency

Throughput(TPS), Latency: API 성능 테스트

 

성능테스트란?

제작한 웹 서버(API)가 얼마나 많은 사용할 수 있는지 테스트하거나, 두가지 설계에 대해 어떤 설계가 더 좋은 성능을 내는지 확인하는 테스트이다.

 

 

성능의 지표

Throughput (시간당 처리량)

서비스가 1초당 처리할 수 있는 작업량이다.

  • 단위로는 주로 TPS(Transaction per seconds)를 사용함
  • Throoghput이 클수록 작업이 더 빨리 끝남
  • 높은 수치일수록 성능이 좋음

Latency (지연시간)

시스템이 클라이언트로부터 Request를 받아서 Response를 보내주기까지 걸리는 시간을 의미한다.

  • 특정 작업을 얼마나 빨리 처리할 수 있는지 나타내는 성능 지표
  • Latency가 작을수록 더 빨리 응답함
  • 낮은 수치일수록 성능이 좋음

 

 

성능 향상을 위한 고민

아래와 같은 시스템이 있을 때 때 전체 구간의 TPS 와 Latency 는 Throughput: 500TPS, Latency: 350ms 이다.

 

 

Throughput (TPS)

가장 낮은 구간이 전체 시스템의 성능

 

Latency

모든 구간의 Latency를 더한 값이 전체 시스템의 성능

 

아래와 같이 낮은 TPS를 갖지는 부분을 제외한 구간의 성능을 높였을 때,

 

Latency 는 280ms 로 낮아지는(200+50+100=350 -> 200+30+50=280) 것에 반해,

Throughput 은 여전히 500TPS 이다.

 

이렇게 병목현상이 발생시켜 전체 시스템의 성능에 영향을 미치는 구간을 Critical Path 라고 한다.

 

 

 

시스템 전체의 Throughput 을 향상시키기 위해서는 병목현상이 발생하는 Critical Path를 찾아 성능을 향상시켜야 한다.

 

 

 

Critical Path의 성능을 향상시킨 이후에 모든 구간의 Throughput 이 동일하지 않은이상Critical Path는 다른 구간으로 이동한다.

 

 

TPS (Transaction per second)

초당 처리할 수 있는 Transaction의 수를 의미한다. 처리량을 나타내는 성능 지표이다.

 

위 그래프를 보면 서비스를 이용하는 사용자가 증가하면 TPS 는 지속적으로 늘어난다.

 

부하가 계속 증가하다가 어느 시점에 이르러 처리량이 더이상 증가하지 않고 일정한 수준을 유지하게 되는데, 이렇게 되는 변곡점을 Saturation Point(포화지점)이라고 한다.

 

포화점 이후부터는 대기시간(Queuing time)이 길어지기 때문에 응답시간이 기하급수적으로 증가하게 되며, 사용자가 증가하더라도 성능이 더 이상 올라가지 않기 때문에 이 때의 동시 사용자 수를 최대 허용 동시 사용자라고 표현한다.

 

 Saturation point는 해당 시스템의 최대 처리량을 나타내는 지점되고, 이 변곡점을 기준으로 해당 서버가 감당할 수 있는 부하를 정의할 수 있다. 

 

 

<참조>

https://performance.tistory.com/4

https://ch4njun.tistory.com/266

'# Development > Methodologies' 카테고리의 다른 글

[REST API] API 문서 작성  (0) 2023.06.14
[클린 코드] 에러 핸들링  (0) 2023.01.31
[클린 코드] 클래스  (0) 2023.01.31
[클린 코드] 함수  (0) 2023.01.31