기타

회고 - Jmeter 를 활용한 성능 테스트

열심히 해 2025. 1. 1. 10:54

성능 테스트를 위한 도구: Jmeter, K6, nGrinder 등

성능 테스트 결과 시각화를 위한 도구: influxdb, prometheus, grafana 등

 

회고 - 정말 많은 일이 있었습니다.

 

더보기

저는 자바스크립트 언어를 모르기에 Jmeter 를 쓰는 게 현명했습니다. 하지만 GPT 의 도움과 팀원들의 응원에 K6를 골랐습니다.... 

 

정말 많은 일이 있었지만 간단하게 정리하고자 합니다.

 

총 8가지 경우의 수가 있었습니다.

 

1. Jmeter, K6

2. influxdb, prometheus

3. docker O, docker X

 

맨처음 Jmeter 하나만으로 테스트를 성공했지만(여기서부터 K6 도전) 시각화 자료가 너무 '구려서' grafana 를 떠올리게 되었습니다. 그래서 위와 같은 8가지의 경우의 수로 되는 방법을 찾았지만.... 포트-주소와 매트릭스, 토큰 요구 등 여러 난관에 결국 grafana 를 활용한 시각화에 실패했습니다.

 

그러는 중 튜터님께서 '어째서 prometheus 와 grafana 를 쓰는 것'인지 물어보시더라구요.

 

저는 예쁜 '시각화'를 근거로 제시했으나 돌아오는 답변은

 

"' prometheus 에 어떤 데이터를 넣을 것인지 - 즉 어떤 데이터를 보고 싶은지' 정하는 게 우선이다."

 

"prometheus 로 보내는 데이터를 보내 확인하고자 하는 것은 일반적으로 CPU와 메모리에 관한 부분이다." 와 같았습니다.

 

저는 핵심을 놓치고 있었고, 그저 '되기만' 하면 좋은 테스트를 하고 있었습니다.

 

분명 캠프 도중에 '되기만 하면 좋은 개발 보다는 내가 이해하고 있는 개발을 하자'고 결심했던 것과 정반대로 나아가고 있었습니다. 왜냐하면 다른 팀원들이 예쁜 그래프를 가지고 이야기할 때 너무 부러웠거든요 !!@!!

 

하지만 그게 정말 중요한 것일까.... 라고 스스로에게 물었을 때 역시 조금 창피해졌습니다. K6를 사용하면 거의 전적으로 GPT나 다른 팀원에게 스크립트를 물어봐야 하기 때문입니다. 또 네트워크에 대한 개념이 부족한 상태에서 port와 port - 엔드포인트로 연결 하는 등의 어려움도 있었습니다.

 

이제와서 생각하면 오히려 실패해서 다행인 것 같습니다. 8가지의 경우의 수에서, 뭐가 뭔지 모르는 상태로 꼬박 이틀동안 이해하지 못하는 테스트를 위해 이것저것 해보다 지치고, 결국 성공하지도 못했는데 어쩌면 당연한 결과입니다.

 

 

위 회고 정리

1. 내가 이해하고 있는 부분에서 할 수 있는 것을 하자.
2. 내가 무엇을 원하는지 확실하게 정하자.

 

 


 

 

Thread Group (사용자 부하 설정)

  1. Thread Group을 추가:
    • Test Plan > Add > Threads (Users) > Thread Group
  2. 설정값:
    • Number of Threads (users): 시작 시 동시 사용자 수. (예: 100)
    • Ramp-Up Period (in seconds): 부하를 점진적으로 증가시키는 시간. (예: 60초)
    • Loop Count: 요청 반복 횟수. (예: Forever 또는 테스트 완료 조건에 맞춰 설정)

 

HTTP Request (API 호출 설정)

  1. HTTP Request를 추가:
    • Thread Group > Add > Sampler > HTTP Request
  2. 설정값:
    • Server Name or IP: API의 도메인 또는 IP (예: localhost 또는 api.example.com)
    • Port Number: API 서버의 포트 번호 (예: 8080)
    • HTTP Method: POST
    • Path: API 엔드포인트 경로 (예: /search/trades)
    • Parameters:
      • word: 테스트에 사용할 검색
    • Body Data:
      • API에 전달할 JSON 데이터.

 

Timer (부하 증가 설정)

  • 부하를 점진적으로 증가시키기 위해 Constant Throughput Timer를 설정:
    1. Thread Group > Add > Timer > Constant Throughput Timer
    2. 설정값:
      • Target Throughput: 초당 요청 수를 설정합니다.

 

Listener (결과 확인용 설정)

  1. View Results in Table: 응답 상태를 확인하기 위해 추가.
  2. Aggregate Report: 평균 응답 시간, 성공률 등 집계된 데이터를 확인하기 위해 추가.
    • Aggregate Report에서 확인할 주요 지표:
      • Throughput (처리량): 초당 처리된 요청 수.
      • Avg (평균 응답 시간): API 응답 시간.
      • Error % (오류율): 요청 중 실패한 비율.
  3. Summary Report: 처리량, 응답 속도 등 통계 데이터를 확인하기 위해 추가.

 

 

 

< 참고 >

 

Jmeter 사용법:
https://effortguy.tistory.com/164

 

'K6 + prometheus + grafana':
https://it-roheerumi.tistory.com/198

 

'K6 + influxdb + grafana':

https://yeon-dev.tistory.com/203

 

'Jmeter + prometheus + grafana' :

https://doqtqu.tistory.com/274

 

' Jmeter + influxdb + grafana ' :

https://doqtqu.tistory.com/274