#author("2022-06-05T09:37:56+00:00","default:admin","admin") #author("2022-06-05T09:38:12+00:00","default:admin","admin") -[[人気の負荷試験(負荷テスト)ツールを調べてみる(Locust, Vegeta, wrk):https://wonderwall.hatenablog.com/entry/load-testing-tools]] -[[Webサイト負荷テストの定義と改善 ~便利なツール集付き~:https://www.seleqt.net/programming/website-load-testing/]] -[[負荷テストのポイント:https://techinfoofmicrosofttech.osscons.jp/index.php?%E8%B2%A0%E8%8D%B7%E3%83%86%E3%82%B9%E3%83%88%E3%81%AE%E3%83%9D%E3%82%A4%E3%83%B3%E3%83%88]] -[[Web負荷テストツールまとめ:https://qiita.com/tomoki-n/items/1eeb104266d53d23df75]] *k6 [#jbca3d64] [[k6:https://k6.io/]] *[[k6:https://k6.io/]] [#ra34545b] -[[k6 - github:https://github.com/grafana/k6]] -[[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] *その他 [#c58400a6] **[[hey:https://github.com/rakyll/hey]] [#dfbde098] **[[Apache JMeter:http://jmeter.apache.org/]] [#tc567db2] -[[Jmeter のインストールから負荷テストまで:https://qiita.com/shotets/items/d553d7be0d407a9a9a53]] -[[JMeter 3.2をWindows 7にインストールして起動:http://ossfan.net/setup/jmeter-01.html]] -[[WindowsからJMeterでHTTPリクエストする最低限の手順まとめ:https://matome.naver.jp/odai/2140033595263493301]] -[[Apache Jmeter - マイクロソフト系技術情報 Wiki:https://techinfoofmicrosofttech.osscons.jp/index.php?Apache%20Jmeter]] -[[【図解】はじめてでもわかるJMeterの使い方:http://tech-blog.rakus.co.jp/entry/2017/08/24/111332]] -JavaでできているためOSに依存せず、JavaがインストールされているWindows、Mac OSX、Linuxなどで実行可能 **Siege [#d541a5e7] -[[Siegeによる負荷テストでWebアプリをスケールさせる方法:https://www.webprofessional.jp/web-app-performance-testing-siege-plan-test-learn/]] -[[Siege を使って WebAPI の負荷テストを実施する:https://qiita.com/kyrieleison/items/be516f4d041b3b7d1242]] **Vegeta [#p6f685e3] -[[HTTP/HTTPSリクエスト向け負荷テストツールのVegetaがとても良かった:http://mmiyauchi.com/?p=1711]] **Apache Bench [#y1697e48] **httperf [#n3328ff8] **WCAT [#t19bd65d] -[[【ワレコのIIS】無償の簡易 Web 負荷ツール WCAT って言うのを使ってみた:https://www.wareko.jp/blog/web-capacity-analysis-tool-introduction]] **[[fwptt:http://fwptt.sourceforge.net]] [#z35e71b5] **Web ApplicationStress Tool [#u4f35c79] -[[MS Web Application Stress ツール:https://technet.microsoft.com/ja-jp/library/gg983535.aspx]] -提供終了となっている。それなりに使えたのに残念。 -後継はWCAT **[[NeoLoad:https://www.neotys.com/neoload/overview]] [#u555164e] **[[WebLOAD:https://www.radview.com/webload-download/]] [#b1ecc510] ** [[Flood:http://httpd.apache.org/test/flood/]] [#h65d112d] -[[Floodを使ってみる:http://d.hatena.ne.jp/think-t/20100608/1276012846]] ** VSTT [#k0c8403f] -[[VSTTのWebテスト機能でアプリケーション品質を強化する: VSTTのWebテスト機能でアプリケーション品質を強化する]] ** MySQL用 [#pe2e0687] -[[mysql と drizzle の負荷テストツール「skyload」が凄い!:http://d.hatena.ne.jp/kazuhooku/20090707/1246950315]]