인스턴스 한 대 기준으로 핵심기능에 목표 TPS를 정한다. 그리고 안정적으로 서비스될 수있게 아래 값을 설정하고 이유를 공유해야한다.
위 프로젝트 요구사항을 받고 현재 어플리케이션의 TPS가 어떻게 되는지 측정해야했다.
스프링 부트를 통해 프로젝트를 진행하고 기존에 그라파나와 프로메테우스로 이미 메트릭 모니터링 시스템을 구축해놨었기 때문에
이를 재활용해서 부하 테스트를 진행하기 전에 TPS를 확인하고자 했다.
관련 메트릭 설정
그라파나에서 TPS를 측정하려면 spring boot actuator 기준 http.server.requests 수집이 활성되어 있어야 한다.
/actuator/metrics 에 접속하여 활성화되어 있는지 확인하자.
그 중에서도 사용할 매트릭은 http_server_requests_seconds_count으로 HTTP 요청 카운터 정보이다.
프로메테우스
엔드포인드 별 TPS 쿼리
sum(rate(http_server_requests_seconds_count{application="$application"}[1m])) by (uri)
- http_server_requests_seconds_count
- Spring Boot 애플리케이션이 처리한 HTTP 요청 카운터 메트릭
- rate()
- 지정된 시간 범위 동안의 초당 평균 증가율을 계산
- [1m]
- 1분 간격으로 계산
application, instance는 우리 애플리케이션 정보와 환경 정보이다.
상위 5개 엔드포인트 TPS 쿼리
topk(5, sum(rate(http_server_requests_seconds_count{application="$application"}[5m])) by (uri))
나머지는 동일하고 5개를 지정하는 부분만 다르다.
- topk(5, ..)
- 계산된 비율 중 가장 높은 5개의 결과만 선택
그라파나 대시보드 설정
새로운 대시보드 또는 탭을 추가한 후 query에 작성하면된다.
작성 완료된 대시보드를 보면!
아직은 요청 수 자체가 많지 않기 때문에 TPS 자체도 낮다...
많은 트래픽이 몰렸을 때 서비스가 몇개의 TPS를 처리할 수 있을지는, 부하 테스트를 진행하면서 다시 확인해봐야 할 듯하다!
'우아한테크코스 6기 > 4단계' 카테고리의 다른 글
@DynamicUpdate 의 장단점 알아보기 (1) | 2024.11.04 |
---|---|
다양한 캐시 전략에 대해 알아보자 (2) | 2024.10.27 |
Connection Pool과 HikariCP에 대해 알아보자 (0) | 2024.10.09 |
고가용성과 SPOF (0) | 2024.10.01 |
JPA에서 Full Text Index 사용하기 (+ 테스트 시 주의점) (0) | 2024.10.01 |