こんにちは。よっしーです(^^)
今日は、Docker環境でJMeterの実行環境を構築する方法について解説しています。
背景
JMeterを利用した負荷試験をする機会がありましたので、その時の内容を備忘として記事に残しました。
JMeterとは
JMeterは、Apacheソフトウェア財団が開発したオープンソースの負荷テストツールです。主にWebアプリケーションのパフォーマンスを測定し、サーバーに対して指定した量のリクエストを送信して、そのレスポンスを受け取ることで、サーバーの負荷状態をテストします。
JMeterの特徴は以下の通りです:
- マルチプロトコルサポート:HTTP, HTTPS, FTPなど様々なプロトコルに対応しています。
- GUIとNon-GUIモード:GUIモードでは視覚的にテストを設定でき、Non-GUIモードではコマンドラインからテストを実行できます。
- スレッドグループ:仮想ユーザーをスレッドとして生成し、同時に多数のリクエストをサーバーに送信することができます。
- リスナー:テスト結果を様々な形式で表示するためのコンポーネントです。
JMeterは、パフォーマンステスト計画を作成し、スレッド数やループ回数などのパラメータを設定して、サーバーに負荷をかけることができます。これにより、実際のユーザーがアクセスしたときのサーバーの挙動をシミュレートし、パフォーマンスのボトルネックを特定することが可能になります。
JMeterの使用方法や詳細については、公式サイトやオンラインのチュートリアルでさらに学ぶことができます。
ファイル一覧
下記のファイルを用意しました。本記事ではjmeter/Dockerfileの内容について解説しています。それ以外のファイルについては別の記事で解説しています。
new file: jmeter/Dockerfile
new file: jmeter/entrypoint.sh
new file: jmeter/test.sh
new file: jmeter/tests/trivial/plan.jmx
new file: Makefile
new file: compose.yml
これらのファイルは下記のサイトを参考にしています。
jmeter/Dockerfile
FROM alpine:3.12
ARG JMETER_VERSION="5.6.3"
ENV JMETER_HOME /opt/apache-jmeter-${JMETER_VERSION}
ENV JMETER_CUSTOM_PLUGINS_FOLDER /plugins
ENV JMETER_BIN ${JMETER_HOME}/bin
ENV JMETER_DOWNLOAD_URL https://archive.apache.org/dist/jmeter/binaries/apache-jmeter-${JMETER_VERSION}.tgz
# Install extra packages
ARG TZ="Asia/Tokyo"
ENV TZ ${TZ}
RUN apk update \
&& apk upgrade \
&& apk add ca-certificates \
&& update-ca-certificates \
&& apk add --update \
curl \
bash \
openjdk8-jre \
tzdata \
unzip \
&& apk add --no-cache nss \
&& rm -rf /var/cache/apk/* \
&& mkdir -p /tmp/dependencies \
&& curl -L --silent ${JMETER_DOWNLOAD_URL} > /tmp/dependencies/apache-jmeter-${JMETER_VERSION}.tgz \
&& mkdir -p /opt \
&& tar -xzf /tmp/dependencies/apache-jmeter-${JMETER_VERSION}.tgz -C /opt \
&& rm -rf /tmp/dependencies
# TODO: plugins (later)
# && unzip -oq "/tmp/dependencies/JMeterPlugins-*.zip" -d $JMETER_HOME
# Set global PATH such that "jmeter" command is found
ENV PATH $PATH:$JMETER_BIN
このコードは、Dockerfileの一部であり、Alpine Linux 3.12をベースイメージとして使用して、Apache JMeterの特定バージョン(ここでは5.6.3)をインストールするための手順を定義しています。以下に各コマンドの解説を示します:
このDockerfileは、Alpine Linux上でJMeterを動作させるために必要な環境を構築します。RUN
コマンドは、Alpine Linuxのパッケージマネージャーであるapk
を使用して、Java Runtime Environment (JRE) やその他の依存パッケージをインストールしています。また、curl
を使用してJMeterのアーカイブをダウンロードし、tar
コマンドで展開しています。
コメントアウトされた# TODO: plugins (later)
の部分は、将来的にJMeterプラグインをインストールするためのスペースを示しており、現時点では実行されません。
ENV PATH $PATH:$JMETER_BIN
により、JMeterの実行可能ファイルがコンテナ内のどこからでも実行できるようにPATH環境変数に追加しています。
このDockerfileを使用することで、JMeterを含むDockerコンテナを構築し、負荷テストを実行する環境を簡単にセットアップできます。
おわりに
今日は、Docker環境でJMeterの実行環境を構築する方法について解説しました。
何か質問や相談があれば、コメントをお願いします。また、エンジニア案件の相談にも随時対応していますので、お気軽にお問い合わせください。
それでは、また明日お会いしましょう(^^)
コメント