개발일기

성능 판단을 위한 대표적인 지표

ignuy 2023. 12. 14.

Throughput(처리량)

시간당 처리량을 의미한다. 이 처리량이라는 것이 사실 추상적인 의미이므로 구체적인 수치를 의미할 때는 보통 TPS(Transaction per secons)나 RPS(Request per seconds) 등으로 이야기한다. 처리량이 클수록 더 좋은 성능을 의미한다.

TPS

여기서 Transaction은 DB 트랜잭션 뿐 만을 의미하는 것이 아니라 Business의 한 사이클을 트랜잭션이라 의미한다.

유저 수에 따라 TPS는 지속해서 증가하다가 더 이상 증가하지 않고 유지되는 시점을 Saturation Point(포화 지점)라고 한다. 만약 이 지점을 지난후에 TPS가 떨어지게 된다면 튜닝이 필요한 시스템을 의미하게 된다. 포화지점은 '초당 처리할 수 있는 Transaction의 수가 한계에 도달했고 그때부터 사용자가 증가하면 Latency가 증가한다는 것'을 의미하므로 포화지점이 해당 서버가 감당할 수 있는 한계 지점을 의미한다.

Latency(지연 시간)

지연시간은 클라이언트로 요청을 받고 응답을 하기까지의 전체적인 시간으로 낮을수록 좋다. 클라이언트를 누구로 설정하냐에 따라 아래와 같이 여러 세부항목들이 있다.

  1. 실제 유저를 클라이언트로 생각하면 유저가 웹 시스템에서 특정 요청을 하고 이에 대한 응답이 화면에 보이기까지의 시간을 의미한다.
  2. 웹 브라우저와 같은 클라이언트 프로세스를 클라이언트로 생각하면 백엔드 프로세스 입장에서 요청을 받고 응답을 주기까지의 시간을 의미하게 된다.
  3. 백엔드 프로세스를 클라이언트로, DBMS를 서버로 생각하면 DBMS가 요청을 받고 응답하기까지의 시간을 의미한다.

Concurrency(최대 동시 사용자)

동시에 시스템과 상호 작용하는 사용자의 최대 수를 의미한다. 시스템이 얼마나 많은 동시 요청을 처리할 수 있는지를 보여준다.

에러율(Error Rate)

시스템에서 발생한 에러의 비율을 의미한다. 낮은 에러율은 시스템의 안정성을 나타내며, 높은 에러율은 잠재적인 문제를 나타낼 수 있다.

'개발일기' 카테고리의 다른 글

[개발일기] HTTP method GET 조회 vs POST 조회  (0) 2024.08.23
성능 테스트의 목적  (0) 2023.12.13
[Spring, Java] 외부 API 호출  (1) 2023.11.15
ssafy 신한 해커톤 지원  (0) 2023.10.12

댓글