Last updated:
Select a language: [English] [日本語]
このドキュメントはAzure Marketplaceで提供されている “Load Tester (multiple remote servers) Powered by Apache JMeter™” の説明書です。
“Load Tester (multiple remote servers) Powered by Apache JMeter™” はJMeterを複数のサーバ上で稼働させ、大規模な負荷テストをすることを目的としています。
※単体のサーバでApache JMeterから負荷をかけたい場合は、"Load Tester (standalone) Powered by Apache JMeter™" をご利用ください。
Azure Marketplace上の “Create Load Tester (multiple remote servers) Powered by Apache JMeter™” を選択し、必要なパラメータ情報を設定後デプロイします。
構築に必要なパラータの説明は以下の通りです。
“Basic” タブ
“Networking” タブ
既存の仮想ネットワークを選択して、そのサブネットにNSGが設定されている場合は、以下のセキュリティ規則を追加してください。
- JMeterクライアントサブネット
- 受信セキュリティ規則 - JMeterサーバサブネットから TCP/1099,30000-65535 を許可
- 受信セキュリティ規則 - JMeterクライアントに接続するクライアントから TCP/3389,22 を許可
- JMeterサーバサブネット
- 受信セキュリティ規則 - JMeterクライアントサブネットから TCP/1099,30000-65535 を許可
“Storage” タブ
File shareing storage account
CSVデータファイルと、各種設定をJMeterサーバと共有するストレージアカウントを指定します
「新規作成」を押すと、ストレージアカウント名などの変更ができますが、アカウントの種類は何を選択しても「StorageV2」が設定されます。
“JMeter client” タブ
NAT Gatewayを持つ既存の仮想ネットワークにJMeter clientを配置する場合、Public IPのSKUは「Standard」である必要があります。
“JMeter servers” タブ
NAT Gatewayを持つ既存の仮想ネットワークにJMeter serverを配置する場合、この値は無効にする必要があります。
仮想ネットワークがNAT Gatewayを持たず、JMeterでテストする対象がインターネット側の場合には、この値を有効にすることを推奨します。
Azureサブスクリプションの制限に注意してください。(vCPU数、インスタンス数、パブリックIPアドレス数など)
“Tags” タブ
作成されるリソースにタグを設定します。
Network Security Group (NSG) は仮想マシンのNICに対して設定されます。
JMeterクライアントでは、以下のインバウンドルールがNSGに追加されます。
必要なところからのみ接続を許可するように、このNSG設定を変更することをお薦めします。
※ Apache JMeterの使用方法はこのドキュメントには含まれていません
お好みにより、Remote DesktopによるGUI操作と、SSHによるCUI操作を選択できます。
Remote Desktop接続
クライアントPCからリモートデスクトップ(RDP)で接続します。
リモートデスクトップ画面が表示され、「Login to (仮想マシン名)」のダイアログが表示されるので、以下の情報を設定して [OK] をクリックします。
Apache JMeterの起動
リモートデスクトップ画面の [JMeter] をダブルクリックします。
[Options] メニューの [Choose Language] から表示言語の変更が行なえます。
SSHで接続し、操作してください。
JMeterのパス:/usr/local/jmeter
JMeterクライアントおよびすべてのJMeterサーバは、/mnt/jmuserdata ディレクトリに共有ストレージをマウントしています。
そのため、JMeterクライアントで /mnt/jmuserdata ディレクトリにファイルを置くことで、そのファイルはJMeterサーバで利用することが可能になります。
また、JMeterクライアントから以下のように /mnt/jmuserdata/sync.to ファイルにコピー先のディレクトリを指定をすることで、/mnt/jmuserdata ディレクトリに置いたファイルが、各JMeterサーバのそのディレクトリに同期されます。
[/mnt/jmuserdata/sync.to]
# Load Tester user files copy setting file
#
# The files in this directory will be synced to the directory listed in this file when the JMeter servers are started.
# If there are files in the destination directory that are not in this directory, they will be deleted.
#
/mnt/resources/jmuserdata
AzureポータルやAzure CLIなどを使用して、JMeterクライアントとサーバのインスタンスサイズを変更できます。
AzureポータルやAzure CLIなどを使用して、JMeterサーバのインスタンス数を変更できます。
JMeterサーバの数を変更した後には次のコマンドを実行して、JMeterクライアントが参照するサーバ一覧を更新します。
/usr/local/jmeter/bin/jmeter.properties ファイルが更新されます。
$ ~/refresh-jmeter-servers.sh
もし、JAVA実行環境の調整が必要な場合 (例:-Xmx, -Xms) 以下の手順で行います。
~/.loadtesterファイルにある “JVM_ARGS” 環境変数を修正します。
その後、JMeterクライアントからログアウト後に再度ログインします。
JMeterクライアントで /mnt/systmp/jmeter-server-option.sh ファイルを変更し、AzureポータルなどからJMeterサーバの仮想マシンスケールセットを再起動します。
JMeterクライアントで /mnt/systmp/jmeter.properties ファイルを変更し、AzureポータルなどからJMeterサーバの仮想マシンスケールセットを再起動します。
本ファイルを誤った内容で変更した場合、JMeterサーバが起動しなくなる恐れがありますので、変更前にファイルのバックアップを取ることをお勧めします。
デフォルトではJRE 8上でJMeterが動作します。
仮想マシン上には以下のJREが導入済みで、任意のversionに変更することができます。
JMeterクライアントで ~/.loadtester と /mnt/systmp/jmeter-server-option.sh の末尾にJAVA_HOMEの設定を追加します。
JRE 11を利用する場合の設定例
export JAVA_HOME="/usr/lib/jvm/java-11-openjdk-amd64"
その後、JMeterクライアントは仮想マシンからログアウト後に再度ログインし、またAzureポータルなどからJMeterサーバの仮想マシンスケールセットを再起動します。
JMeter でコメントを日本語で入力したい場合などでお試しください。
クライアントPCからリモートデスクトップ(RDP)で接続します。
リモートデスクトップ画面の [Applications] メニューから [Settings] を選択後、 [Session and Startup] をクリックします。
[Application Autostart] タブで一覧中の [ibus-daemon] をチェック後、[Close] をクリックします。
リモートデスクトップからログアウト後に再度ログインします。
リモートデスクトップ画面の [Applications] メニューから [Settings] を選択後、 [iBus Preferences] をクリックします。
[Input Method] タブで [Add] をクリック後に表示される [Select an input method] 画面にて、[Japanese] をクリック後に表示される一覧から [Kana Kanji] を選択後、[Add] をクリックします。
[Japanese - japanese] を選択、[Remove] をクリックし、[Input Method] から削除後 [Close] をクリックしてiBus Preferences 画面を終了します。
リモートデスクトップ画面の [Applications] メニューから [Settings] を選択後、 [Language Support] をクリックします。
[Language] タブで [Keyboard input method system] のプルダウンメニューから [iBus] を選択後、[Close] をクリックして Language Support 画面を終了します。
デスクトップ画面上部のステータスバーに [あ] が表示されることを確認、[半角/全角] キーで日本語と英語の切り替えを行います。
Ubuntu及びJMeterをはじめとした各種のソフトウェアバージョンは、Azure Marketplaceに登録時点の最新 Version が適用済みです。
必要に応じてUbuntuおよびソフトウェアのアップデートを行ってください。
Virtual machineにTCP/3389ポートで接続できる必要があります。
以下を確認してください。
仮想マシンを正常に動作させるためには、OSのメモリは2GB以上必要です。
仮想マシン及び仮想マシンスケールセットのサイズを適切なものに変更してください。
JVM_ARGS環境変数に -Xmsおよび-Xmsを指定して、JMeterが使用するヒープメモリサイズを調整してください。
「利用方法」の章にある JAVA実行環境の調整方法 を参照してください。
デプロイ中に「QuotaExceeded」や「PublicIPCountLimitExceededByVMScaleSet」などのエラーが出力された場合、vCPUやパブリックIPアドレスの数がサブスクリプションの制限を超えています。
その場合は、Azureサポートに連絡して制限値を増やすか、仮想マシンのサイズ・台数を少なくした上で再度デプロイします。
Error in rconfigure() method java.rmi.ServerException: RemoteException occurred in server thread; nested exception is:
java.rmi.UnmarshalException: error unmarshalling arguments; nested exception is:
java.io.InvalidClassException: org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase; local class incompatible: stream classdesc serialVersionUID = {???}, local class serialVersionUID = {???}
クライアントとサーバーのJMeterのバージョンが異なる可能性があります。
クライアントとサーバーのJMeterバージョンを同じものにするために、select-jmeter-version.shコマンドにより利用するJMeterのバージョンを指定した後、AzureポータルなどからJMeterサーバの仮想マシンスケールセットを再起動します。
例) JMeterのバージョンを5.3にする場合の設定方法
select-jmeter-version.shスクリプトで利用するバージョンを指定
$ ~/select-jmeter-version.sh 5.3
Success
Please restart JMeter servers virtual machine scale set.
現在選択できるJMeterのバージョン
AzureポータルなどからJMeterサーバの仮想マシンスケールセットを再起動する
~/select-jmeter-version.shスクリプトが存在しない場合は、Load Testerの古いリリースを利用しているため、JMeterバージョンの選択をすることができません。
その場合は以下の手順でJMeterのバージョンを記述した/mnt/systmp/jmeter-versionファイルを作成することで、クライアントとサーバーのバージョンを揃えることができます。
クライアントで利用しているJMeterバージョンを知る
$ /usr/local/jmeter/bin/jmeter.sh -v
出力が以下の場合のバージョンは5.3です。
/mnt/systmp/jmeter-versionファイルにJMeterのバージョンを書き込む
$ echo 5.3 > /mnt/systmp/jmeter-version
$ cat /mnt/systmp/jmeter-version
5.3
AzureポータルなどからJMeterサーバの仮想マシンスケールセットの全てのインスタンスを再イメージ化する
Azure Policyにより「存在しない場合は、サブスクリプションからタグを継承する」などのポリシーの対象となると発生します。
Azure Portalでのデプロイ時に、“Tags"タブで継承元に設定されているタグと同じものを設定することで、この問題を回避できます。
サポートは有償にて承ります。
サポートをご希望の方は以下にお問い合わせください。
Apache®, Apache JMeter™, JMeter, and the feather logo are either registered trademarks or trademarks of the Apache Software Foundation in the United States and/or other countries. No endorsement by The Apache Software Foundation is implied by the use of these marks.