서버 테스트 비교
두 테스트는 각각 다른 가상 사용자(VUs) 수로 실행했습니다. 첫 번째 스크린숏은 300개의 VUs로, 두 번째는 100개의 VUs로 실행했습니다. 첫 번째 테스트 서버는 간단한 스트링을 보여주는 코딩이고, 두 번째는 OpenAI API를 이용한 챗봇 서버입니다.
첫 번째 테스트 (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_blocked 및 http_req_connecting: 두 번째 테스트에서 이 두 지표가 상당히 높습니다. 이는 네트워크 레이턴시 문제나 서버의 연결 한계를 나타낼 수 있으며, 성능 병목현상을 시사합니다.
테스트의 몇 가지 문제점
테스트 조건이 동일하다면, 가상 사용자 수가 더 많은 첫 번째테스트에서 서버가 더 효율적으로 처리하고 있는 것으로 보입니다. 첫 번째 테스트의 http_req_duration
이 평균 2.02ms 인 반면, 두 번째 테스트에서는 10.09ms로, 가상 사용자 수가 적음에도 불구하고 처리 시간이 더 길게 나왔습니다. 이는 서버가 특정 부하 수준에서 더 나은 성능을 발휘할 수 있음을 나타내며, 서버의 처리 능력이나 리소스 활용이 최적화되어 있을 수 있음을 시사합니다.
http_req_blocked
와 http_req_connecting
에서는 두 번째 테스트의 지연 시간이 훨씬 길어, 네트워크 연결 지연이나 서버 설정에 문제가 있을 수 있음을 보여줍니다. 이러한 높은 지연 시간은 사용자 경험을 저하시킬 수 있으므로, 서버의 연결 처리 방식, 네트워크 설정, 인프라의 성능 등을 검토할 필요가 있습니다.
두 테스트 모두 http_req_failed
메트릭에서 0%의 실패율을 보여줌으로써, 실패한 요청 없이 모든 HTTP 요청이 성공적으로 처리되었다는 점에서는 일관성이 있습니다.
iteration_duration
의 차이는 테스트 중 사용된 가상 사용자의 수가 성능에 직접적인 영향을 미치는지를 나타냅니다. 더 많은 가상 사용자(300 VUs)를 사용한 첫 번째 테스트에서는 각 가상 사용자가 시나리오를 완료하는 데 평균적으로 더 긴 시간이 걸렸으며(평균 3.03초), 더 적은 가상 사용자(100 VUs)를 사용한 두 번째 테스트에서는 더 짧은 시간(평균 1.01초)이 소요되었습니다.
정리
이러한 결과는 서버가 높은 부하 하에서도 안정적으로 작동할 수 있는지, 그리고 어느 부하 수준에서 성능 저하가 발생하는지를 파악하는 데 도움이 됩니다. 그러나 정확한 원인을 파악하기 위해서는 더 많은 테스트와 세부적인 시스템 모니터링이 필요합니다.
'도서로 공부하는 프로그래밍 > 코딩 자율학습' 카테고리의 다른 글
[NodeJS] Node.js 마이크로서비스와 리액트 (26) | 2024.04.04 |
---|---|
[NodeJS] Node.js 마이크로 서비스 (23) | 2024.04.03 |
[NodeJS] K6를 통한 성능 테스트 (25) | 2024.04.01 |
[NodeJS] 서버 성능 테스트, K6 (23) | 2024.03.31 |
[VSCode] 프로젝트 디렉터리에서 VSCode 프로그램 여는 방법 (27) | 2024.03.31 |