
投稿者:ローマンデニセンコ、シニアTestArtエンジニアDataArt。
はじめに
多くの場合、パフォーマンスをテストするとき、膨大な数の同時リクエストを簡単に消化できる高すぎるシステムをロードするタスクが発生します。 または、実験システムが負荷ソースに非常に敏感で、クライアントの地理的位置に応じてコンピューティングパワーのバランスをとる場合に、状況が発生する可能性があります。
このような負荷を生成するには、1台のテストマシンの機能だけでは不十分です。 そして、古典的な問題が発生します-最小のコストと最大の結果でそのような負荷をどのように再現できるか。
幸いなことに、負荷テストに使用される最新のソフトウェアツールのほとんどでは、分散負荷をエミュレートするために必要な追加のリモートエージェントを使用できます。 この記事では、テスターが使用する最も一般的なプログラムの1つである、偉大で恐ろしいApache JMeterの例を使用して、負荷クラスターを作成する可能性を検討したいと思います。
理論
多くの人がJMeterの機能に精通していると思います(そうでない場合は、このプログラムの主な機能に関する初心者向けの基本的な記事を読むことを強くお勧めします)。
最初に、JMeterの作成者が採用している用語を見てみましょう。 そして、正直なところ、彼らの用語はかなり奇妙です。 JMeterの観点では、負荷を管理するサーバーは「クライアント」と呼ばれます。 メインサーバーからコマンドを受け取り、ロードを実行するエージェントは「サーバー」と呼ばれます。 個人的には、この用語は少し逆になっていると思いますが、クリエイターの良心に任せましょう。 記事ではこれらの用語を使用します。 JMeterで作成された典型的な分散負荷インフラストラクチャは、下の画像で簡単に見ることができます。

分散負荷のロジックは非常に単純です:
クライアントは指定された一連のテストを各
サーバーに送信し、
サーバーはこれらのテストを実行して、収集した結果を
クライアントに送り返し
ます。クライアントは受け取った情報を要約し、エンドユーザーに表示します。 したがって、ロードに使用するエージェントの数の違いは特に目立ちません。1台のマシンで以前と同じように作業できます。
作業プロセス:
JMeterにリモートエージェントを表示させ、それらに連絡できるようにするには、次の手順を実行する必要があります。
1.ダウンロードします。
公式Webサイトから JMeterの最新バージョンをダウンロードする必要があります。 アーカイブには、クライアントとサーバーの両方の両方のバージョンが含まれています。 サーバーまたはクライアントとしてのJMeterの起動方法の依存関係は、プログラムのメインの実行可能ファイルが起動されたときに送信されるキーを使用して決定されます。 最も重要な点を考慮する価値が
あります -
サーバーとクライアントのバージョンは一致しなければなりません!2.インストール 。 その後、ダウンロードしたアーカイブを、クライアントと分散負荷サーバーを実行するマシンに解凍する必要があります。 良い面の1つ-JMeterでは、1つのクライアントに接続されたサーバーを無制限に使用できます。 ただし、重要な制限があり
ます 。
すべてのマシンが同じサブネット上になければなりません 。 クラウドソリューションの場合、これはVPN接続を使用して簡単に解決できます。
3.サーバー 。 次に、分散負荷サーバーを起動する必要があります。 これは非常に簡単です。 これを行うには、プログラムフォルダーのルートにある
bin/jmeter-server
スクリプト(Windowsの場合は.bat)を実行する必要があります。
注 :JavaがサーバーのIPアドレスを正しく決定しない場合があります。この場合、jmeter-serverログに例外が表示され、IPアドレスが使用するものと異なることが示されます。 その後、別のIPを割り当てることができます。 これを行うには、パラメーター
-Djava.rmi.server.hostname = [IP]を使用してサーバーを起動します
。4.クライアント 。 すべてのサーバーを起動した後、負荷を管理するクライアント自体を構成する必要があります。 クライアントに実行中のすべてのサーバーを検出させるには、これらのサーバーのIPアドレスをbin / jmeter.propertiesファイルの
remote_hosts
プロパティに追加する必要があります。
remote_hosts=192.168.0.1:1099, 192.168.0.2:1098
注 :ポート番号はオプションのパラメーターです。 デフォルトでは、サーバーはポート1099を使用しますが、手動で割り当てることができます。
5.実行 。 最後のステップは非常に簡単です。 JMeterを起動して、すべてのサーバーが正しく機能していることを確認する必要があります。 これを行うには、メニュー項目の[
実行 ]
-> [すべてリモートで開始 ]を使用して、分散負荷を開始してみます。 このアイテムを使用すると、上記のすべてのサーバーを使用してロードを開始できます。 特定のサーバーのみを使用する場合は、[
実行]-> [リモートスタート]-> [サーバー]を選択し
ます。[サーバー]は、手順4でプロパティファイルに追加され、手順3でクライアントマシンで起動したサーバーのアドレスです。
6。
おわりに
これらすべての非常に簡単な手順を実行すると、リモートサーバーのパワーを使用して、好きな大きな負荷をエミュレートできます。 希望する負荷は、自由に使える空きサーバーの数と自分の想像力によってのみ制限されます。
便利なリンク
jmeter.apache.org/usermanual/remote-test.htmjmeter.apache.org/usermanual/jmeter_distributed_testing_step_by_step.pdfgerardnico.com/wiki/jmeter/remotewww.guru99.com/jmeter-distributed-testing.html