리눅스

웹 서버의 최대 동시 접속자 수 및 TPS(Transactions Per Second) 측정하는 방법

코드버스 2023. 3. 22. 19:37
728x90
반응형

웹 서버의 최대 동시 접속자 수 및 TPS(Transactions Per Second) 측정하는 방법

웹 서버의 최대 동시 접속자 수 및 TPS(Transactions Per Second) 측정하는 방법은 여러가지가 있지만, 가장 일반적인 방법은 아파치 HTTP 서버 벤치마크(Apache HTTP Server Benchmark, ab)를 사용하는 것입니다.

 

1. 아파치 HTTP 서버 벤치마크(ab) 설치

  • ab는 Apache 웹 서버와 함께 제공되는 유틸리티입니다.
  • 따라서 Apache 웹 서버를 설치하면 자동으로 ab도 함께 설치됩니다.
  • 아파치 HTTP 서버 벤치마크(ab)를 따로 설치하려면 Apache HTTP Server 설치 페이지에서 다운로드 받을 수 있습니다.

2. 벤치마크 명령 실행

  • 벤치마크 명령은 다음과 같습니다.
ab -n [요청 수] -c [동시 접속자 수] [URL]
  • [요청 수]는 총 요청 수를, [동시 접속자 수]는 동시에 접속할 수 있는 최대 접속자 수를 의미합니다.
  • [URL]은 벤치마크를 실행할 웹 서버의 URL을 입력합니다.

3. 결과 분석

  • 벤치마크를 실행하면 다양한 결과가 출력됩니다.
  • 그 중에서도 중요한 결과는 다음과 같습니다.
    • Requests per second: 초당 처리할 수 있는 요청 수입니다.
    • Time per request: 요청당 처리 시간입니다.
    • Concurrency Level: 동시 접속자 수입니다.
    • Complete requests: 성공적으로 처리된 요청 수입니다.
  • 이 결과를 분석하여 최대 동시 접속자 수와 TPS를 산출할 수 있습니다.

4. 벤치마크 실행 예시

  • 예를 들어, 동시에 1000명의 사용자가 접속하고 10000개의 요청을 보내는 벤치마크를 실행한다면 다음과 같은 명령을 입력합니다.
ab -n 10000 -c 1000 http://example.com/
  • 이 명령을 실행하면 아파치 HTTP 서버 벤치마크(ab)가 1000명의 사용자가 동시에 10000개의 요청을 보내는 시나리오를 실행하면서, 처리량과 응답 시간 등 다양한 정보를 출력합니다.

5. 결과 분석 예시

  • 벤치마크 결과에서 중요한 정보를 추출하여 분석합니다.
  • 예를 들어, 다음과 같은 결과가 있다면,
Concurrency Level:      1000
Time taken for tests:   2.760 seconds
Complete requests:      10000
Failed requests:        0
Requests per second:    3623.19 [#/sec] (mean)
Time per request:       276.002 [ms] (mean)
  • 이 결과는 2.76초 동안 1000명의 사용자가 동시에 10000개의 요청을 보내며, 모든 요청이 성공적으로 처리되었다는 것을 의미합니다.
  • 이 결과를 분석하여 최대 동시 접속자 수와 TPS를 계산할 수 있습니다.
    • 최대 동시 접속자 수 = Concurrency Level = 1000
    • TPS = Requests per second = 3623.19 [#/sec] (mean)

6. 참고 사항

  • 웹 서버의 최대 동시 접속자 수 및 TPS는 하드웨어 사양, 네트워크 대역폭, 웹 서버 소프트웨어, 웹 어플리케이션 등 여러 가지 요인에 따라 다릅니다.
  • 따라서 이러한 측정을 할 때는 환경을 정확하게 구성하고, 여러 번 측정하여 평균값을 계산하는 것이 좋습니다.

 

728x90
반응형