k6를 사용하여 DB의 부하 테스트 환경을 구축해 보십시오
11034 단어 PostgreSQLSQLk6tech
개시하다
DB타SQL에 대한 하중 테스트를 수행하기 위한 필수조건이 있는데, 그때 k6를 이용한 적이 있기 때문에 내용을 정리해보려고 한다.
무엇
k6는 소스 부하 테스트 도구입니다.
무료, 개발자 중심, 확장 가능한 특징이 있습니다.
k6 테스트 시스템의 신뢰성과 성능을 이용하여 고성능과 장애 방지 응용 프로그램을 구축할 수 있다.
컨디션
이번에 Mac의 로컬 환경에서 가져오기
k6
와 xk6-sql
(SQL 확장 기능 실행).가져오기
goo 설치
확장 기능의 설치 관계로 인해
goenv
부터 가져옵니다.설치
go
$ goenv install 1.17.8
유효성$ goenv global 1.17.8
명령을 실행할 수 있는 경우 완료$ go version
go version go1.17.8 darwin/arm64
k6 및 xk6-sql 설치
설치
k6
설치$ go install go.k6.io/[email protected]
xk6
$ go install go.k6.io/xk6/cmd/[email protected]
작업 디렉토리로 이동구축 명령 실행
$ cd /path/to/workspace
xk6-sql
$ CGO_ENABLED=1 xk6 build master \
--with github.com/grafana/xk6-sql
작업 디렉토리 바로 아래에 파일 생성 확인 k6
$ ls
k6
생성된 k6
의 실행을 확인하면 완료$ ./k6 version
k6 v0.36.0 ((devel), go1.17.8, darwin/arm64)
실행
이번에는 로컬 환경에 PostgreSQL이 존재하는 환경을 바탕으로 PostgreSQL을 연결하는 시나리오를 제작한다.
방안 실현
시나리오의 실현은 JS에서 진행된다.
PostgreSQL을 연결하고 SQL을 실행하는 코드는 다음과 같습니다.
//
// postgreSQLに接続するサンプル
//
import sql from ‘k6/x/sql’;
// ユーザー名
const userName = ‘user’;
// パスワード
const password = ‘password’;
// ホスト名
const hostName = ‘127.0.0.1’;
// ポート番号
const port = ‘5432’;
// DB名
const dbName = ‘postgres’
// SSLモード
const sslMode = ‘sslmode=disable’
// 接続情報から接続用の文字列を作成
const connectionString = `postgres://${userName}:${password}@${hostName}:${port}/${dbName}?${sslMode}`;
// DBへ接続
const db = sql.open(“postgres”, connectionString);
export function setup() {
db.exec(`CREATE TABLE IF NOT EXISTS table (
key varchar,
value varchar);`);
}
export function teardown() {
db.close();
}
export default () => {
db.exec(“INSERT INTO table (key, value) VALUES (‘plugin-name’, ‘k6-plugin-sql’);“);
let results = sql.query(db, “SELECT * FROM table;“);
for (const row of results) {
console.log(`key: ${row.key}, value: ${row.value}`);
}
}
실제 실행 후 다음과 같은 결과가 표시됩니다.$ ./k6 run scenario.js
/\ |‾‾| /‾‾/ /‾‾/
/\ / \ | |/ / / /
/ \/ \ | ( / ‾‾\
/ \ | |\ \ | (‾) |
/ __________ \ |__| \__\ \_____/ .io
execution: local
script: ./script.js
output: -
scenarios: (100.00%) 1 scenario, 1 max VUs, 10m30s max duration (incl. graceful stop):
* default: 1 iterations for each of 1 VUs (maxDuration: 10m0s, gracefulStop: 30s)
INFO[0002] key: plugin-name, value: k6-plugin-sql source=console
running (00m01.9s), 0/1 VUs, 1 complete and 0 interrupted iterations
default ✓ [======================================] 1 VUs 00m00.7s/10m0s 1/1 iters, 1 per VU
█ setup
█ teardown
data_received........: 0 B 0 B/s
data_sent............: 0 B 0 B/s
iteration_duration...: avg=628.31ms min=53.58µs med=664.73ms max=1.22s p(90)=1.1s p(95)=1.16s
iterations...........: 1 0.529856/s
vus..................: 0 min=0 max=0
vus_max..............: 1 min=1 max=1
DB에서 SQL을 직접 수행할 수 있습니다.이후 필요에 따라 방안의 내용을 수정하기만 하면 된다.
최후
k6를 사용하여 DB에서 SQL을 직접 수행할 수 있는 환경을 정리했다.
k6는 기능이 풍부한 Saas로 여기에는 다 쓰지 못하는 기능이 많다.이 방면은 문서에 기재되어 있으니 필요에 따라 참고하시오.
그럼!
참고 자료
Reference
이 문제에 관하여(k6를 사용하여 DB의 부하 테스트 환경을 구축해 보십시오), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/choimake/articles/4a937b4c7e10b6텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)