性能系の確認をしたい場合に使うやつ。nodeで動くので、node必須。公式?はココ。
インストール。CentOS7。nodeとnpm入れてから。入ってない場合はコッチ参照。
npm install -g loadtest
で、色々オプションがあるんだけど、とりあえずの使用は↓
loadtest [-n requests] [-c concurrency] URL ex. loadtest -n 200 -c 10 http://localhost/hoge
使いそうなオプションは↓
-n requests | 送るリクエストの数。-c指定してる場合にリクエストの総数がパラメータよりも大きくなる可能性があるとのこと。その場合は最初のn個だけレポートするらし。 |
---|---|
-c concurrency | 擬似的にクライアントをここで指定した個数分作って、並列処理するらし。 プロセス的に分けて並列してるわけではない模様。応答が返ってくる前に2個目のリクエストが送信される場合もあるってさ。 |
-t timelimit | リクエスト送り続ける秒数。応答が返ってきてなくても終わらせるってさ。 |
-C cookie-name=value | cookie付けたい場合。複数ある場合は繰り返して書けって事らし。 |
-H header:value | ヘッダーつけたい場合。jwtのテストとかで使えそう?「-h ”Authorization: JWT token-value"」的に。複数ある場合は繰り返して書けってさ。 |
-P POST-body | ポストの中身。「-P '{"key": "a9acf03f"}'」みたいな。 |
-m method | メソッドの指定。デフォはGET。POSTにしたい時⇒「-m POST」 |
-T content-type | content-typeですね。デフォはtext/plain。 |
--data POST some variables | フォーム送信的な事やるときはこれかな?⇒の感じで使えってさ。「--data '{"username": "test", "password": "test"}' -T 'application/x-www-form-urlencoded' -m POST」。これやるときは「-m POST」 と -Tは必須っぽ。 |
--rps requestsPerSecond | これ使いそー。1秒間あたりに何個リクエスト出すかを指定する。「--rps 0.5」は2秒毎に1リクエストらし。-cと合わせる場合、並列の個数毎に効くんじゃなくて、全体としての扱いになる模様。-c 10とかやって場合に一つ一つ毎にrpsが効くわけではないと。で、あまりに並列度低いとrps満たせなくなるからそれなりに考えてねってことらしい。 |
他にもいろいろあるので詳しくは公式参照。
例えば、10個のクライアントで1秒間にトータル100リクエスト(1クライアント10リクエスト/秒想定)出す状態で10秒間動かす場合は↓の感じ。
loadtest -t 10 -c 10 --rps 100 http://localhost/hoge
で、動かすと色々出てくるんだけど見るのは↓あたりかな。
#1秒間に送信できたリクエスト数 Requests per second: 10 #平均待ち時間 Mean latency: 6.4 ms #待ち時間の分布割合。↓だと50%は5msで帰ってきてるってことかしら? Percentage of the requests served within a certain time 50% 5 ms 90% 10 ms 95% 12 ms 99% 23 ms 100% 23 ms (longest request)
あと↓の感じで(公式サンプル)、javascriptとして普通に組み込めるからテスト用にモジュール化しておけば、自動実行とか組み込めそうですね。。。
const loadtest = require('loadtest'); const options = { url: 'http://localhost:8000', maxRequests: 1000, }; loadtest.loadTest(options, function(error, result) { if (error) { return console.error('Got an error: %s', error); } console.log('Tests run successfully'); });