성능 테스트
이 스크린숏은 K6 부하 테스트의 결과를 보여줍니다. 이번 테스트 시나리오는 최대 100개의 가상 사용자(VUs)를 활용하며, 최대 40초 동안 실행되었습니다. 이러한 설정 아래에서 다음과 같은 결과가 도출되었습니다.
- data_received: 총 74 KB의 데이터를 받았습니다.
- data_sent: 총 32 KB의 데이터를 보냈습니다.
- http_req_blocked: HTTP 요청이 네트워크 대기열에 머무른 평균 시간은 약 1.79ms입니다.
- http_req_connecting: HTTP 요청을 처리하기 위해 연결을 설정하는 데 걸린 평균 시간은 약 1.47ms입니다.
- http_req_duration: 서버가 HTTP 요청에 대한 응답을 완료하는 데 걸린 평균 시간은 약 2.04ms입니다.
- http_req_receiving: 서버로부터 응답을 받는 데 걸린 평균 시간은 2ms입니다.
- http_req_sending: 서버로 HTTP 요청을 보내는 데 걸린 평균 시간은 약 1.17ms입니다.
- http_req_tls_handshaking: TLS 핸드셰이킹에 걸린 시간은 평균 0ms로, TLS 핸드셰이킹이 발생하지 않았거나 측정되지 않았음을 의미합니다.
- http_req_waiting: 서버가 요청에 대한 처리를 완료하고 응답을 보내기까지 대기한 평균 시간은 35.92ms입니다.
- http_reqs: 총 400개의 HTTP 요청을 수행했습니다.
- iteration_duration: 각 가상 사용자가 시나리오를 완료하는 데 걸린 평균 시간은 약 3.04초입니다.
- iterations: 총 400번의 반복을 완료했습니다.
- vus: 평균 100개의 가상 사용자가 테스트를 실행했습니다.
- vus_max: 최대 가상 사용자 수는 100명입니다.
이 결과는 서버가 설정한 부하 조건 하에서 비교적 빠르게 응답하고 있음을 보여줍니다. http_req_duration
은 서버 응답 시간을 나타내며, 평균 2.04ms는 매우 빠른 응답 속도를 의미합니다. http_req_waiting
시간이 상대적으로 더 긴 것으로 보아, 서버 처리 시간이 요청/응답 주기에서 가장 큰 지연 요소인 것으로 보입니다.
이 테스트는 모든 요청이 성공적으로 처리되었으며(http_req_failed
에서 실패율 0%), 높은 처리량(초당 약 32.58개의 요청)을 유지하고 있음을 나타냅니다.
코딩 내용
HTTP 모듈 임포트: import http from 'k6/http'; 구문은 K6의 HTTP 네트워킹 기능을 스크립트로 가져옵니다. 이를 통해 HTTP 요청을 보낼 수 있습니다.
Sleep 함수 임포트: import { sleep } from 'k6'; 구문은 스크립트의 실행을 일정 시간 동안 중지시킬 수 있는 K6의 sleep 함수를 가져옵니다.
옵션 설정: export let options = {...}; 부분은 테스트를 위한 다양한 설정을 정의합니다. 여기서는 가상 사용자의 수(vus: 100)와 테스트 지속 시간(duration: '10s')을 설정하고 있습니다.
기본 함수: export default function () {...}; 구문은 실제 부하 테스트 시 각 가상 사용자가 실행할 기본 함수를 정의합니다. 이 함수는 http.get('http://localhost:8000');를 통해 지정된 주소(http://localhost:8000)로 HTTP GET 요청을 보내고, sleep(1);로 1초 동안 대기합니다.
이 스크립트를 K6와 함께 실행하면, K6는 설정된 옵션에 따라 최대 100개의 가상 사용자를 생성하여 각각 10초 동안 http://localhost:8000 주소로 HTTP 요청을 보내고, 요청마다 1초씩 대기하는 테스트를 수행합니다. 이는 일반적으로 로컬 개발 서버에서 응답성과 성능을 평가하는 데 사용됩니다.
정리
이 데이터를 바탕으로, 성능이 요구 사항을 충족하는지, 또는 서버 리소스를 추가로 최적화할 필요가 있는지 결정할 수 있습니다. 서버의 현재 성능 수준을 평가하고, 애플리케이션이 더 높은 트래픽을 수용할 준비가 되어 있는지 확인할 수 있습니다.
'도서로 공부하는 프로그래밍 > 코딩 자율학습' 카테고리의 다른 글
[NodeJS] Node.js 마이크로 서비스 (23) | 2024.04.03 |
---|---|
[NodeJS] 두 서버의 부하 테스트 시나리오 비교 (27) | 2024.04.02 |
[NodeJS] 서버 성능 테스트, K6 (23) | 2024.03.31 |
[VSCode] 프로젝트 디렉터리에서 VSCode 프로그램 여는 방법 (27) | 2024.03.31 |
[NodeJS] Node.js의 장점과 단점 그리고 주의사항 (26) | 2024.03.30 |