An open API service indexing awesome lists of open source software.

https://github.com/jiro4989/jmeter_sample

負荷試験ツールjmeterを使うサンプルプロジェクト
https://github.com/jiro4989/jmeter_sample

docker echo go jmeter loadtest mysql

Last synced: 5 months ago
JSON representation

負荷試験ツールjmeterを使うサンプルプロジェクト

Awesome Lists containing this project

README

          

= jmeter_sample
:toc: left
:sectnums:

負荷試験ツールjmeterを使うサンプル。

image::https://user-images.githubusercontent.com/13825004/120019733-c23b8100-c023-11eb-91cf-b5835a4ca7cc.png[report]

== 使い方

まず、 `app` コンテナを起動する。
`app` コンテナは Go の echo で実装された単純なAPIサーバ。

[source,bash]
----
make up
----

次に `jmeter` コンテナを起動して単一のAPIリクエストを行う。
以下のコマンドを実行する。

[source,bash]
----
make jmeter
----

実行すると `jmeter/out` ディレクトリにレポートが作られる。
report/index.html をブラウザで確認し、OKになっているかを確認する。

確認ができたら負荷をかける。
以下のコマンドで秒間を100リクエストの負荷を60秒間かけ続ける。

[source,bash]
----
make jmeter-60
----

== テストプランの更新方法

jmeterのテストプラン(jmxファイル)の更新はGUIから行う。
GUIつきjmeterをホストPCにインストールし、app.jmxファイルを開いて更新すること。

== app.jmxの構成

以下のユーザ定義変数を使用するようにしている。

- BASE_URL
- THREADS
- SECONDS

jmeterからリクエストを送る時、HTTPサンプラーにURLを設定する。
HTTPサンプラーは数が非常に増えるため、ベースURLを変数で共通化している。
それをテストプラン直下の BASE_URL というユーザ定義変数に設定して共通化している。

THREADS と SECONDS は負荷をかける量を制御する変数。
THREADS = 1000, SECONDS = 10 の場合、 1000 / 10 == 100 になるので、秒間100リクエ
ストの負荷を10秒間かける、といった負荷設定になる。

これらをjmeterを実行する時のコマンドライン引数から制御できるようにした。
パラメータはそれぞれ THREADS に対して C_THREADS、 SECONDS に対して C_SECONDS と
した。