서버에 부하가 얼마나 걸리나? Jmeter Http 부하(Load) 테스트.



여러 테스트 도구 중 Apache Jmeter를 선택한 이유.

  • 오픈소스.
  • 간편함.
  • 결과를 직관적으로 보여줌.
  • 사용자가 많음.
  • 문서 잘 된 편임.

Jmeter Http 부하 테스트 작성 순서

  1. Jmeter를 내려받는다. (http://jmeter.apache.org/download_jmeter.cgi)
  2. 압축을 풀고 Jmeter를 실행한다.
  3. Test Plan에 자식 노드 Thread Group를 추가한다.
  4. Therad Grup에서 Properties에 원하는 값을 넣어준다.
    Number of Thread는 테스트할 사용자의 수이고,
    Ramp-Up Period는 테스트를 몇 초에 걸쳐서 실행할 것인지 기간을 말한다.
    만약 Number of Thread가 10이고, Ramp-Up Period가 100이라면 각각의 Thread가 10초마다(100/10) 시작된다.
    하나의 Thread가 실행되고 10초의 여유 시간을 가지고 다음 Thread를 실행하는 것이다.
    Loop count에는 이 Thread를 몇 번 반복할지 적어준다.
  5. *만약 요청(Request)에 헤더 값을 설정해 줘야 한다면, Thread Group에 자식노드 HTTP Header Manager를 추가한다.
    Name과 Value값을 넣어주면 설정이 완료된다.
    예를 들자면 Name란에 Content-Type, Value란에 application/json을 적어주면 Content-Type이 application/json으로 설정된다.
  6. Thread Group에 자식 노드 HTTP Request를 추가한다.
  7. HTTP Request의 Web Server 란에 서버 이름(혹은 IP)와 포트 번호를 설정 한다.
  8. HTTP Request의 Path에 요청을 보낼 경로를 적어준다. (예: /about/company.html)
  9. HTTP Request의 Method를 Get으로 설정한다.
  10. HTTP Request에 자식 노드 Listener를 추가한다.
    여러 종류의 Listener가 있는데, View Results Tree는 각각의 요청에 대한 응답 결과를 보여주고,
    Summary Report는 종합적인 테스트 결과를 테이블로 보여준다.
    그리고 Spline Visualizer는 종합 결과를 그래프로 보여준다.
  11. *만약 여러 Thread Group에 대한 종합 결과를 보고 싶다면, Test Plan에 자식 노드로 Listener를 추가하면 된다.

아래는 예시를 위해 Jmeter로 테스트한 Spline Visualizer 결과값이다.

Flask 개발용 서버-'Jmeter로 Http 부하 테스트하기'
Flask 개발용(dev) 서버.

twisted-'Jmeter로 Http 부하 테스트하기'
twisted

twisted + Nginx -'Jmeter로 Http 부하 테스트하기'
twisted + Nginx

gunicorn + Nginx -'Jmeter로 Http 부하 테스트하기'
gunicorn + Nginx

각 테스트의 Summary Report를 정리한 표.-'Jmeter로 Http 부하 테스트하기'
각 테스트의 Summary Report를 정리한 표.

배포하기 전에 어떤 조합 성능이 좋을지 궁금하다면,
Jmeter를 이용해 각각 환경을 간단히 시험해 보면 좋다.

참고 자료