성능 기본

성능의 주요 지표

성능을 측정하는 주요 지표는 다음과 같다.

  • 사용자(Users): 서비스를 사용하는 사용자의 수

  • 응답 시간(Response Time): 각 요청에 대한 응답 시간

  • 초당 처리량(Transaction per Second, TPS): 초당 처리 가능한 트랜젝션의 수

  • 리소스 사용량(Resource Usage): CPU, 메모리, 디스크, 네트워크 등의 사용량

사용자

사용자를 성능 테스트 관점에서 아래로 나눌 수 있다.

  • 서비스에 요청을 하고 있는 사용자(Active User): 서버에 부하를 주는 사용자

    • 서버에 요청을 보내고 결과를 기다리는 사용자

    • 성능 테스트시 Virtual User와 동일한 개념

  • 서비스에 접속한 사용자(Concurrent User): 서버에 접속한 사용자

    • 서버에 부하를 주고 있거나, 부하를 줄 가능성이 있는 사용자

    • Active User를 포함한 상위 개념

성능 테스트 시 Active와 Concurrent 사용자의 비율을 고려해야 한다. Active와 Concurrent 사용자의 비율은 서비스마다 다르지만 일반적으로 5% 정도이며, 많게는 40%까지 증가할 수 있다.

응답 시간

시스템 관점의 응답시간은 크게 요청 시간(Request Time)과 응답 시간(Response Time)으로 나눌 수 있다. 사용자는 새로운 요청을 하기 전에 전의 시간(컨텐츠를 소비하는 시간)을 Think Time이라고 한다.

  • Request Time

    • Client: 웹에서 처리하는 시간

    • Network connect: 네트워크 연결 소요 시간

    • Request data send: 요청 데이터 전송 시간

  • Response Time

    • Server: 서버에서 처리하는 시간(Network + Application Server + DB + Cache 등에서 소요되는 시간의 합)

    • Response data receive: 응답 데이터 수신 시간

    • Network close: 네트워크 연결 종료 시간

병목 현상

병목 현상은 시스템의 성능이 지연되고 느려지는 현상을 의미하며, 아래의 요소들로 인해 발생한다.

  • Database

  • Server 리소스

  • 연계 서버

  • Network

  • Client

  • Data format

이중 보통 가장 많이 발생하는 것은 Database에 의한 병목 현상이다.

Database

Database 병목 현상이 큰 이유는, 대부분의 서비스가 DB에 의존하여 데이터를 제공하고 처리 시간의 대부분이 DB에서 소요되기 때문이다. 이를 해결하고 방지하기 위해서 보통 아래와 같은 방법을 사용하고 고려하고 있다.

  • 적절한 index 사용

  • ORM 사용 시 N+1 문제 방지

  • 반드시 RDBMS를 사용해야 하는지 고려

  • Cache 사용

  • 분산 클러스터 컴퓨팅(Spark) / 검색 서버 사용(Elasticsearch)

성능 측정 도구

성능 측정 도구는 크게 모니터링 도구 / 성능 분석 도구 / 성능 테스트 도구로 나눌 수 있다.

  • 모니터링 도구: 서버 리소스 사용량을 모니터링 하는 도구(Grafana, Prometheus, Zabbix 등)

  • 성능 분석 도구

    • Profiler: CPU / Memory / Thread 등을 세부적으로 분석하는 도구(측정시 리소스 사용량이 증가하기 때문에 보통 개발 환경에서만 사용)

    • APM: 서버의 사용자 수나 리소스에 대한 실시간 모니터링을 제공하는 도구(Pinpoint, Scouter 등)

  • 성능 테스트 도구

    • BMT: 두 개 이상의 대상에 대한 성능을 비교하는 도구

    • 성능 테스트 도구: 시뮬레이션을 통해 성능을 측정하는 도구(Gatling, JMeter, nGrinder 등)

측정 도구는 무료 / 유료 많은 것이 제공되지만 항상 같은 도구를 사용하는 것이 아니라, 상황에 맞게 적절한 도구를 선택하는 것이 중요하다.

Last updated