본문 바로가기
도서로 공부하는 프로그래밍/코딩 자율학습

[NodeJS] 두 서버의 부하 테스트 시나리오 비교

by 열공노년 2024. 4. 2.
반응형

서버 테스트 비교

두 테스트는 각각 다른 가상 사용자(VUs) 수로 실행했습니다. 첫 번째 스크린숏은 300개의 VUs로, 두 번째는 100개의 VUs로 실행했습니다. 첫 번째 테스트 서버는 간단한 스트링을 보여주는 코딩이고, 두 번째는 OpenAI API를 이용한 챗봇 서버입니다.

caption: 스트링을 보여주는 서버
caption: OpenAI 챗봇 서버

첫 번째 테스트 (300 VUs)

  • data_received: 총 222 KB 받음.
  • data_sent: 총 96 KB 보냄.
  • http_req_blocked: 평균 대기 시간 6.79ms.
  • http_req_connecting: 평균 연결 시간 6.59ms.
  • http_req_duration: 평균 요청 처리 시간 2.02ms.
  • http_req_receiving: 평균 수신 시간 1.99ms.
  • http_req_sending: 평균 송신 시간 934.69μs.
  • http_req_waiting: 평균 대기 시간 30.07ms.
  • http_reqs: 총 1200개의 요청 처리.
  • iteration_duration: 평균 반복 시간 3.03초.
  • iterations: 총 1200번 반복 완료.
  • vus: 최대 300 VUs.

두 번째 테스트 (100 VUs)

  • data_received: 총 443 KB 받음.
  • data_sent: 총 80 KB 보냄.
  • http_req_blocked: 평균 대기 시간 578.08ms.
  • http_req_connecting: 평균 연결 시간 559.74ms.
  • http_req_duration: 평균 요청 처리 시간 10.09ms.
  • http_req_receiving: 평균 수신 시간 148.16ms.
  • http_req_sending: 평균 송신 시간 197.09μs.
  • http_req_waiting: 평균 대기 시간 9.75ms.
  • http_reqs: 총 1000개의 요청 처리.
  • iteration_duration: 평균 반복 시간 1.01초.
  • iterations: 총 1000번 반복 완료.
  • vus: 최대 100 VUs.

비교 및 분석

  • 가상 사용자 수의 차이: 첫 번째 스크린샷에서는 300명의 사용자가 있었고, 두 번째 스크린숏에서는 100명의 사용자가 있었습니다. 가상 사용자 수의 증가는 서버에 더 많은 부하를 주고 성능 저하를 유발할 수 있습니다.
  • 처리된 데이터 양: 첫 번째 테스트에서는 데이터 수신량이 더 적고 데이터 송신량이 더 많았습니다. 이는 테스트 시나리오의 차이나 네트워크 조건의 변화를 반영할 수 있습니다.
  • 응답 시간: 300 VUs를 사용한 첫 번째 테스트에서 http_req_duration, http_req_receiving, http_req_waiting 등의 응답 시간이 일관되게 더 낮습니다. 이는 서버가 더 많은 부하를 더 효율적으로 처리할 수 있음을 시사합니다.
  • http_req_blockedhttp_req_connecting: 두 번째 테스트에서 이 두 지표가 상당히 높습니다. 이는 네트워크 레이턴시 문제나 서버의 연결 한계를 나타낼 수 있으며, 성능 병목현상을 시사합니다.

테스트의 몇 가지 문제점

테스트 조건이 동일하다면, 가상 사용자 수가 더 많은 첫 번째테스트에서 서버가 더 효율적으로 처리하고 있는 것으로 보입니다. 첫 번째 테스트의 http_req_duration이 평균 2.02ms 인 반면, 두 번째 테스트에서는 10.09ms로, 가상 사용자 수가 적음에도 불구하고 처리 시간이 더 길게 나왔습니다. 이는 서버가 특정 부하 수준에서 더 나은 성능을 발휘할 수 있음을 나타내며, 서버의 처리 능력이나 리소스 활용이 최적화되어 있을 수 있음을 시사합니다.

 

http_req_blockedhttp_req_connecting에서는 두 번째 테스트의 지연 시간이 훨씬 길어, 네트워크 연결 지연이나 서버 설정에 문제가 있을 수 있음을 보여줍니다. 이러한 높은 지연 시간은 사용자 경험을 저하시킬 수 있으므로, 서버의 연결 처리 방식, 네트워크 설정, 인프라의 성능 등을 검토할 필요가 있습니다.

 

두 테스트 모두 http_req_failed 메트릭에서 0%의 실패율을 보여줌으로써, 실패한 요청 없이 모든 HTTP 요청이 성공적으로 처리되었다는 점에서는 일관성이 있습니다.

 

iteration_duration의 차이는 테스트 중 사용된 가상 사용자의 수가 성능에 직접적인 영향을 미치는지를 나타냅니다. 더 많은 가상 사용자(300 VUs)를 사용한 첫 번째 테스트에서는 각 가상 사용자가 시나리오를 완료하는 데 평균적으로 더 긴 시간이 걸렸으며(평균 3.03초), 더 적은 가상 사용자(100 VUs)를 사용한 두 번째 테스트에서는 더 짧은 시간(평균 1.01초)이 소요되었습니다.

정리

이러한 결과는 서버가 높은 부하 하에서도 안정적으로 작동할 수 있는지, 그리고 어느 부하 수준에서 성능 저하가 발생하는지를 파악하는 데 도움이 됩니다. 그러나 정확한 원인을 파악하기 위해서는 더 많은 테스트와 세부적인 시스템 모니터링이 필요합니다.

반응형