728x90
반응형
K6이란?
k6은 엔지니어링 팀의 성능 테스트를 쉽고 생산적으로 만드는 오픈 소스 부하 테스트 도구이다.
k6은 무료이며 개발자 중심적이며 확장 가능하다.
주요특징
- 테스트 스크립트를 Javascript (ES6) 로 작성. jmeter (jmx) 대비 개발자 친화적이고, 시나리오와 함께 테스트 설정까지 코드로 구현 가능, 재사용을 위한 모듈화 가능
- Jmeter 대비 더 작은 리소스로 성능 테스트 구현, 즉, jmeter 보다 동일자원에서 더 많은 트래픽을 생산 가능
window 설치방법
1. PowerShell을 활용하여 Chocolatey 패키지 매니저를 설치
C:\> Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))
2. 설치가 완료되면 choco 명령어를 사용하여 k6을 설치
C:\> choco install k6 --version 0.34.1
ubuntu 설치방법
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys C5AD17C747E3415A3642D57D77C6C491D6AC1D69
echo "deb https://dl.k6.io/deb stable main" | sudo tee /etc/apt/sources.list.d/k6.list
sudo apt-get update
sudo apt-get install k6
사용방법
1. 샘플 코드 작성 (sample.js)
아래 링크에 다양한 옵션들이 있으니 참조해서 사용해보면 된다.
https://k6.io/docs/using-k6/options/#discard-response-bodies
import http from 'k6/http';
import {sleep} from 'k6';
export const options = {
// see https://k6.io/docs/using-k6/options/#discard-response-bodies
// discardResponseBodies: true,
// see https://k6.io/docs/using-k6/options/#stages
// ex) 30초 동안 10명
stages: [
{duration: '30s', target: 10}
],
// see https://k6.io/docs/using-k6/options/#hosts
// hosts: {
// 'test.k6.io': '1.2.3.4',
// 'test.k6.io:443': '1.2.3.4:8443',
// },
hosts: null,
};
export default function() {
const url = 'http://localhost/sample';
const payload = JSON.stringify({
api_key: 'xxxxx'
});
const params = {
headers: {
'Content-Type': 'application/json',
},
};
http.post(url, payload, params);
}
2. 실행
D:\example>k6 run sample.js
/\ |‾‾| /‾‾/ /‾‾/
/\ / \ | |/ / / /
/ \/ \ | ( / ‾‾\
/ \ | |\ \ | (‾) |
/ __________ \ |__| \__\ \_____/ .io
execution: local
script: sample.js
output: -
scenarios: (100.00%) 1 scenario, 10 max VUs, 2m50s max duration (incl. graceful stop):
* default: Up to 10 looping VUs for 2m20s over 3 stages (gracefulRampDown: 30s, gracefulStop: 30s)
running (0m00.9s), 01/10 VUs, 316 complete and 0 interrupted iterations
default [--------------------------------------] 01/10 VUs 0m00.8s/2m20.0s
running (2m20.0s), 00/10 VUs, 56233 complete and 0 interrupted iterations
default ✓ [======================================] 00/10 VUs 2m20s
data_received..............: 26 MB 186 kB/s
data_sent..................: 10 MB 72 kB/s
http_req_blocked...........: avg=630.1µs min=0s med=512.7µs max=22.96ms p(90)=1.33ms p(95)=1.94ms
http_req_connecting........: avg=575.37µs min=0s med=507.9µs max=18.97ms p(90)=1.22ms p(95)=1.83ms
http_req_duration..........: avg=17.01ms min=0s med=16.39ms max=341.48ms p(90)=28.28ms p(95)=36.07ms
http_req_failed............: 100.00% ✓ 56233 ✗ 0
http_req_receiving.........: avg=752.87µs min=0s med=681.1µs max=23.79ms p(90)=1.55ms p(95)=1.95ms
http_req_sending...........: avg=100.82µs min=0s med=0s max=22.96ms p(90)=503.6µs p(95)=975.7µs
http_req_tls_handshaking...: avg=0s min=0s med=0s max=0s p(90)=0s p(95)=0s
http_req_waiting...........: avg=16.16ms min=0s med=15.49ms max=341.48ms p(90)=27.33ms p(95)=35.12ms
http_reqs..................: 56233 401.655215/s
iteration_duration.........: avg=20.62ms min=1.54ms med=17.15ms max=2.63s p(90)=29.52ms p(95)=37.78ms
iterations.................: 56233 401.655215/s
vus........................: 1 min=1 max=10
vus_max....................: 10 min=10 max=10
728x90
반응형
'백엔드 > 성능 최적화' 카테고리의 다른 글
FastAPI 동기/비동기 동작 방식 분해해보기 (0) | 2024.04.05 |
---|---|
메모리 할당 기법 ptmalloc2 vs tcmalloc vs hoard vs jemalloc 비교 (0) | 2023.07.26 |
JVM 성능을 최적화 방법 (0) | 2022.04.08 |
JVM 과 Garbage Collection 동작 방식 (0) | 2022.04.07 |
인프라 관점의 성능 최적화 (0) | 2022.03.30 |