#author("2021-09-14T10:32:59+00:00","default:admin","admin") [[k6:https://k6.io/]] -[[k6 - github:https://github.com/grafana/k6]] #author("2022-06-05T09:38:31+00:00","default:admin","admin") -[[k6でシナリオ作成するときにハマったこと:https://times.hrbrain.co.jp/entry/k6]] -[[モダンな負荷テストツールのk6を試してみた:http://blog.soushi.me/entry/2017/11/11/220606]] -[[k6を使って負荷テストをやってみる:https://qiita.com/ryotaro76/items/f4bbcc1bec3fbae0e4b4]] -[[k6の使い方 シンプル&軽快な負荷試験ツールを試す:https://future-architect.github.io/articles/20210324/]] -[[TypeScriptで負荷シナリオテストを作りたくなった話:https://kaminashi-developer.hatenablog.jp/entry/typescript-load-testing]] -[[k6を使うと負荷テストのパフォーマンス計測が捗る話:https://qiita.com/szk3/items/c1172ef3d182d7fe6868]] -[[k6でシナリオベースの負荷テストを試してみる:https://zenn.dev/tilfin/articles/007c1f5ddbfb103ffbd7]] -[[Load Impact/k6 を使用した負荷試験の実施:https://tech-blog.optim.co.jp/entry/2019/01/15/173000]] -[[k6 - Datadog:https://docs.datadoghq.com/ja/integrations/k6/]] *概要 [#d18ac3c5] -k6はGoで開発されたモダンな負荷試験ツール -軽快なフットワークでインストールが可能 -JavaScriptで書いたシナリオを実行する形で利用 -試験結果は様々な外部システムと組み合わせることが可能 **必要スペック [#iaa37d97] -[[Running large tests:https://k6.io/docs/testing-guides/running-large-tests/]] --Simple tests will use ~1-5MB per VU. (1000VUs = 1-5GB) -ネット上の情報 --26000人~29000人分のアクセスを再現するあたりで64GBのメモリを使い切り動かなくなった --1000人オーダーであれば8~16GBのメモリのマシンであっても耐えられそう --メモリに余裕のない環境ではマシンスペックの限界を超えたときにGoのランタイムエラーが出力される **[[計測項目:https://k6.io/docs/using-k6/metrics/]] [#oa193291] -http_req_blocked -http_req_connecting -http_req_sending -http_req_waiting -http_req_receiving -http_req_duration ... http_req_sending + http_req_waiting + http_req_receiving -http_req_failed -http_req_tls_handshaking **JavaScript対応状況 [#ibb57199] -[[JavaScript Compatibility Mode:https://k6.io/docs/using-k6/javascript-compatibility-mode/]] -k6オプション -- --compatibility-mode=base ... ES5.1+ -- --compatibility-mode=extended ... ES2015(ES6)+ -ES6対応 -但し、k6は実行時に内部でES6からES5に変換している - --compatibility-mode=base オプションをつけるとその処理が省かれるので、省コストで実行されるようになる -なので、最初からES5ベースで記述するか、ES6ベースで記述したものをツールで変換すると良い *インストール [#bf38c2a3] -[[Installation:https://k6.io/docs/getting-started/installation/]] **InfluxDB [#rda7e981] -[[InfluxDB + Grafana:https://k6.io/docs/results-visualization/influxdb-+-grafana/]] -[[K6の負荷テスト結果をGrafana+InfluxDBで可視化する:https://yuya-hirooka.hatenablog.com/entry/2020/12/18/121808]] -InfluxDB(DBは k6)に結果出力 k6 run test.js --out influxdb=http://localhost:8086/k6 **Redisとの連携 [#tece7dcb] -前の実行結果を使って処理する際に便利! -但し、DBは 0 固定か? --2021/9現在。DB指定できるようにドキュメントに書いているが、実際 DB:1 を指定しても DB:0 にデータが登録されている。 -[[Goをインストール:https://golang.org/doc/install]] -git をインストール --[[Windows版:https://gitforwindows.org/]] -[[xk6:https://github.com/grafana/xk6]] をインストール -[[xk6-redis:https://github.com/grafana/xk6-redis]] に従い、ビルド *SSL [#j4927b5b] -[[SSL/TLS - k6:https://k6.io/docs/using-k6/protocols/ssl-tls/]] -[[Disable SSL certificate verification:https://community.k6.io/t/disable-ssl-certificate-verification/672]] *[[k6 Documentation:https://k6.io/docs/]] [#ia0d25ad] -[[get( url, [params] ):https://k6.io/docs/javascript-api/k6-http/get-url-params]] -[[post( url, [body], [params] ):https://k6.io/docs/javascript-api/k6-http/post-url-body-params]] -[[Response:https://k6.io/docs/javascript-api/k6-http/response]] **[[k6/metrics:https://k6.io/docs/javascript-api/k6-metrics/]] [#r4266f42] -[[Rate:https://k6.io/docs/javascript-api/k6-metrics/rate]] -[[Trend:https://k6.io/docs/javascript-api/k6-metrics/trend]] *k6関連プロジェクト [#n055a761] -[[k6-hardware-benchmark:https://github.com/grafana/k6-hardware-benchmark]] *トラブルシューティング [#q838265a] -[[Error Codes:https://k6.io/docs/javascript-api/error-codes/]] **hint="script exception" [#mbd89a63]