인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

denia park님의 프로필 이미지
denia park

작성한 질문수

아키텍처와 함께하는 부하(성능) 테스트 with Locust

성능 병목 지점 확인 및 최적화

성능 병목 지점 확인 관련 질문

해결된 질문

작성

·

23

1

안녕하세요 강사님

 

성능 병목 지점을 확인하는 방법 관련하여 질문이 있습니다.

 

강의 내용에서는 강제로 time.sleep(5)를 삽입하여 전과 후를 비교하기 때문에 어디가 병목인지 예상을 하며 결과를 보기 때문에 그나마 응답시간이나 RPS의 차이가 있음을 알 수 있었는데요

 

  1. 일반적으로 개발 후 테스트 할 때는 순수하게 결과만으로 병목지점을 찾아야 하는데 (일부로 병목지점을 넣은게 아니라면), 결과 값만 가지고 병목지점을 찾는 내용은 따로 없을까요 ? (혹시 병목지점을 찾는 강의 내용은 성능 병목 지점 만들고 결과 분석 강의의 수업노트에 있는 내용이 다인걸까요?)

  2. 성능 병목 지점 만들고 결과 분석 강의의 수업노트를 보면 TPS 분석이 있습니다. Locust도 TPS를 측정한게 있나요 ? RPS만 보여서요.

감사합니다.

답변 1

1

숀김님의 프로필 이미지
숀김
지식공유자

안녕하세요.

문의를 주셔서 감사합니다. ㅎㅎ

두가지에 대해서 문의를 주셨는데요,

질문1). 일반적으로 개발 후 테스트 할 때는 순수하게 결과만으로 병목지점을 찾아야 하는데 (일부로 병목지점을 넣은게 아니라면), 결과 값만 가지고 병목지점을 찾는 내용은 따로 없을까요 ? (혹시 병목지점을 찾는 강의 내용은 성능 병목 지점 만들고 결과 분석 강의의 수업노트에 있는 내용이 다인걸까요?)

→ 답변: 네 이부분은 저도 고민을 했었는데요, 결과적으로 병목을 만들기가 쉽지 않아서, 따로 내용을 넣지는 못했습니다. 그나마 RPS의 차이를 유발할 수 있는 time.sleep(5) 내용을 추가했던것으로 기억 되네요.

저 같은 경우는 실제로 서비스 오픈전에 해당 Locust를 가지고 부하 및 성능 테스트를 진행 했었는데요, 병목 현상은 주로 DB 쿼리에서 많이 발생 했었던 기억이 납니다. 😀

질문2). 성능 병목 지점 만들고 결과 분석 강의의 수업노트를 보면 TPS 분석이 있습니다. Locust도 TPS를 측정한게 있나요 ? RPS만 보여서요.

→ 답변: Locust는 기본적으로 RPS를 기준으로 부하 및 성능을 측정합니다. ㅎㅎ 이게 다른 부하테스트 도구와는 좀 다른점인데요, 일단 RPS와 TPS의 차이점을 간략하게 말씀드리면 아래와 같습니다.

RPS (초당 요청 수): 서버가 초당 처리할 수 있는 HTTP 요청의 수를 나타냅니다.
주로 웹 서버의 성능을 측정할 때 사용됩니다. 예를 들어, 웹 페이지 로딩, API 호출 등의 요청을 포함합니다.

TPS (초당 트랜잭션 수): 데이터베이스나 애플리케이션 서버가 초당 처리할 수 있는 트랜잭션의 수를 나타냅니다. 트랜잭션은 하나 이상의 작업 단위를 포함하며, 데이터베이스의 일관성과 무결성을 유지하기 위해 사용됩니다.
예를 들어, 은행 계좌 이체, 주문 처리 등의 작업을 포함합니다.

위의 설명드린 부분과 같이 제가 수행했던 프로젝트는 은행이나 주문처리 처럼 트랜잭션이 많이 발생하는 서비스가 아닌 웹페이지 및 API 호출등이 주된 서비스라 저같은 경우는 Locust를 활용해 RPS로 부하 및 성능 측정을 진행 했습니다. ㅎㅎ 😀 참고 부탁드립니다.

그리고 추가로 RPS값을 기준으로 TPS값을 측정 할 수도 있습니다. 내용은 아래와 같습니다.
일반적인 예시를 들어 설명을 드리면 아래와 같습니다.

사용자 50명이 1시간 동안 부하를 발생했을 때 평균 RPS가 5.5라고 가정하면, TPS를 계산하기 위해 트랜잭션당 요청 수를 알아야 합니다. 예를 들어, 하나의 트랜잭션이 3개의 요청으로 구성된다고 가정하면, TPS는 다음과 같이 계산됩니다.

RPS (Requests Per Second): 5.5

트랜잭션당 요청 수: 3

[ TPS = 5.5 ÷ 3 = 1.83 따라서, 평균 RPS가 5.5이고 하나의 트랜잭션이 3개의 요청으로 구성된다면,
TPS는 약 1.83이 됩니다. 😀

충분한 답변이 되었으면 좋겠습니다. 혹시 다른 문의 사항 있으시면 언제든지 문의 주세요.

감사합니다. 😀

 

denia park님의 프로필 이미지
denia park
질문자

감사합니다.

denia park님의 프로필 이미지
denia park

작성한 질문수

질문하기