Apache JMeterとは何ですか?
Apache JMeterはオープンソースのJavaソフトウェアプログラム(現在はApache License, version 2.0の下でリリースされています)で、パフォーマンスおよびスケーラビリティの負荷テスト用です。 Windows、Linux、MacOSX向けのGUIおよびコマンドラインサポートを備えた無料ツールで、多くのエンタープライズレベルの機能を持っています。

何ができますか?
Apache JMeterは、ArcGISサービスのような静的および動的リソースだけでなく、ArcGIS Enterprise Site内のWebアプリケーションのパフォーマンスとスケーラビリティをテストするために使用できます。
それは多くの異なるアプリケーションとプロトコルを扱うことができ、例えば:
- Web - HTTP, HTTPS
- SOAP / REST Webservices
- ネイティブコマンドまたはシェルスクリプト
テストの構築とデバッグのためのフル機能IDEを提供し、ワークフロートラフィック(ウェブブラウザから)を直接プロジェクトに記録することも可能です。この記事ではIDEを「GUI」と呼んでいます。
テスト終了時には、結果分析を支援するためにHTMLレポートが自動的に作成されます。
JMeterの動作
JMeterはプロトコルレベル(例:HTTPS)で動作し、ウェブブラウザを模倣しようとはしません。そのため、ウェブアプリケーション内のJavaScriptロジックを実行せず、ブラウザのようにHTMLページをレンダリングしません。
なぜ必要なのですか?
システムのパフォーマンス、スケーラビリティ、および安定性を検証できることは、あらゆるGIS展開の成功した採用にとって重要です。ArcGISの能力を定量化するための最新のテストツールを持つことで、展開への投資と利用を最適化できます。
無料またはオープンソースのアプリケーションを使用してテストを実施することで、アナリストはユーザーと協力してコストによる妨げを避け、テストとその結果に集中できます。
パフォーマンステスト
単一ユーザーによるArcGISサービスのパフォーマンスプロファイリングとトラブルシューティングはほとんどのテストケースをカバーします。JMeterはGISテスト「ツールチェスト」の他のツールに素晴らしい補完となり得ます:
単一ユーザーによるパフォーマンステストと分析は通常、負荷適用前の最初のステップであり、それによりリソースがより重いテストに適しているかどうかを特定できます。言い換えれば、一人で「遅い」場合は20人でさらに遅くなるので、チューニングによってパフォーマンスが改善されるまで負荷テストに進む価値はほとんどありません。
スケーラビリティテスト
スケーラビリティテストは通常、負荷下(例:複数ユーザーのシミュレーション)でのパフォーマンス理解が必要な場合に実施されます。
しかしながら、負荷テストは:
- 異なる専門知識が必要です
- 設定オプションが多いです
- より複雑になり得ます
とはいえ、JMeterのような実績あるツールには広範なコミュニティサポートがあり、この複雑さを軽減する助けとなります:
- 多くのHTTPSテストサンプル/ウォークスルーがオンラインにあります
- ただし、ArcGISサービス向け特定のTest Plan例は見つけにくいかもしれません
- 当社の記事やリソースはこのギャップを埋めることを目指し、GISコミュニティ向けに調整されています
- 知識豊富な同僚
Apache JMeter のインストール
最新版を入手する
最新バージョンは Apache JMeter サイトからダウンロードしてください; 2024年1月 - バージョン5.6.3
注意:JMeterは専用のテストクライアントマシン(ArcGIS Enterpriseサーバーではない)にインストールしてください
ダウンロード後、パッケージをローカルディレクトリに解凍します
詳細情報やオプションについては、JMeter Getting Startedリソースのインストールセクションをご覧ください:https://jmeter.apache.org/usermanual/get-started.html
Apache JMeterはWindows、Linux、およびMacOSX環境で利用可能です。当社のスクリーンショットと例はWindows環境でJMeter(v5.3)を実行したものですが、v5.4.xからv5.6.xセットアップにも適用されます。
OpenJDKまたはOracle JDK?
Apache JMeterを実行するにはJava開発キット(またはランタイム)が必要であり、OpenJDKまたはOracle JDKいずれかでこのタスクが達成されます。
P注意:Apache JMeterもOpenJDKも実際には「インストーラー」を持ちません。どちらも圧縮されたダウンロードファイルです。この点では展開が容易になる場合があります。P注意:常に最新バージョンのJMeterを実行することが推奨されます。
JDKも更新する場合、そのバージョンが使用中のJMeterバージョンでサポートされているか確認してください。. Apache JMeterより:「」
JMeter 5.6.x はJava 8以降が必要(Java 17以降推奨)。」PC:\jdk-17.0.2C:\OpenJDKJAVA_HOME= C:\jdk-17.0.2%JAVA_HOME%\binJARファイルをJMeterのlib/extディレクトリに入れてから、JMeterを(再)起動します。<\/P>
JMeterの実行(GUI)<\/H1>JMeterのGUIモードを開始するには、環境に応じた「jmeter」スクリプトファイルを実行します:<\/P>C:\apache-jmeter-5.6.3\bin\jmeter.bat<\/LI><\/UL>GUIはテストが期待通りに動作しているかを構築および検証するための便利なインターフェースです。<\/P>
<\/span><\/P>JMeter GUIの記事のスクリーンショットは、Options-->Look and Feel-->Metalで見られるMetalテーマに基づいています(デフォルトテーマは「Darklaf – Darcula」)<\/FONT><\/FONT><\/P>注意: Apache JMeterはGUIから負荷テストを実行しないことを推奨しています。GUIはテストの構築とデバッグのみに使用すべきです。<\/FONT><\/STRONG><\/P>コマンドラインからテストを実行する手順は 別の負荷テスト記事<\/STRONG>で説明されています。 <\/SPAN><\/P>非常に基本的な静的テストプランの作成<\/H1>動的なArcGISサービスをテストする前に、単一の静的リクエストでシンプルなテストを構築し、その実行を検証することでJMeterの内部動作や挙動に慣れることが最善です。<\/P>以降のチュートリアルでは、動的なArcGISサービスを対象としたより複雑なテストの構築方法について説明します。<\/P>Apache JMeterを起動するこれにより新しい空のTest Plan(例:テストプロジェクト)が自動的に作成されます。<\/LI><\/UL><\/LI>Test Planを右クリックし、Add-->Threads (Users)からThread Groupを選択これはテストの負荷(ステップ負荷または一定負荷)を定義するために必要です。<\/LI>「Thread Group」はテストのステップ負荷(例:テスト圧力)を定義する基本的なロジックを含みます。すべてのThread Groupがステップ負荷を定義するわけではなく、一部は一定圧力のみ適用するよう設定されています。<\/LI><\/UL><\/LI><\/UL><\/LI><\/UL>
<\/span><\/P>Thread Groupのデフォルト値(ループ回数=1)では、追加したWeb URLリソースが一度だけ実行されます。<\/LI><\/UL>
<\/span><\/P>Thread Groupを右クリックし、Add-->SamplerからHTTP Requestを選択<\/LI><\/UL>
<\/span><\/P>HTTP RequestサンプラーのPathフィールドに静的リソースのURLをコピー&ペーストします。例: https://jmeter.apache.org/images/jmeter.png<\/UL>
テストプランの検証
- View Results Treeリスナーを使用して、リモートサーバーからのGUI内レスポンス検証を支援します。
- Test Planを右クリックし、Add-->ListenerからView Results Treeを選択します。
- Apache JMeterはGUI内でペイロードレスポンス検証用に多くのリスナーを提供していますが、スポットチェック分析にはView Results Treeが強く推奨されます。

- Test Planに戻ってプロジェクトを保存します。
- File-->Save
- JMXファイル(Test Plan)の保存場所指定が求められます。
- 例:simpletest1.jmx

- View Results Treeリスナーのおかげで、テストプランの視覚的検証が簡単になります。
- Apache JMeter GUI上部の緑色三角ボタンをクリックし、View Results Treeを選択してください。

- これにより指定した画像へのリクエストが一度だけ送信され、その後テストは停止します。
- これは「Thread Group」のデフォルト設定による設計です。
- Textセクションには「HTTP Request」と書かれた緑色シールドが表示されるはずです。
- 緑色はリクエストとレスポンスが成功したことを示します。

注意: リクエストを一度だけ送信することで、jmeter.apache.orgサイトへの「load testing」を防止し、このサイトへの負荷増大を避けることができます。<\/FONT>
- 緑色シールドまたはHTTP Request、その後Sampler resultをクリックするとリモートサーバーからの重要情報が表示されます。
- ロード時間(応答時間)
- サイズ(ヘッダーとボディ)
- エラー数
- レスポンスコード
- ContentType
