Docker を使用した nGrinder パフォーマンス テスト プラットフォームの導入プロセスの分析

Docker を使用した nGrinder パフォーマンス テスト プラットフォームの導入プロセスの分析

nGrinderとは何ですか?

nGrinder は、スクリプトの作成、テストの実行、監視、結果レポートの生成を同時に実行できるストレス テスト用のプラットフォームです。オープンソースの nGrinder は、不便さを解消し、統合された環境を提供することで、ストレス テストを簡単に実行できるようにします。これは、Apache License Version 2.0 に基づいてライセンスされており、韓国最大のインターネット企業である NHN Corporation の開発チームによって再設計および改良された Grinder に基づくオープンソースの Web パフォーマンス テスト プラットフォームです。

http://naver.github.io/ngrinder/

nGrinderは3つのコンポーネントで構成されています

コントローラー: パフォーマンス テスターがテスト スクリプトを作成し、テスト関連のパラメーターを構成し、テスト スクリプトをエージェントに自動的に配布できるようにする Web アプリケーション。

エージェント: プロキシ サーバー上でテスト プロセスとスレッドをロードして実行します。テスト対象のサーバーにデプロイしないことをお勧めします。

モニター: テスト対象サーバーのシステム パフォーマンス (CPU/メモリなど) を監視するために使用され、テスト対象サーバーに展開する必要があります。

nGrinder アーキテクチャ

仕組み

コントローラと複数のエージェントで構成されます。テスト シナリオはコントローラ (ブラウザ アクセス) を介して確立され、その後、ストレス テストのためにエージェントに配布されます。
ユーザーは特定の仕様に従ってテスト スクリプトを作成し、コントローラーはスクリプトと必要なリソースをエージェントに配布し、Jython を使用して実行します。
スクリプト実行中に、実行ステータス、応答時間を収集し、対象サーバーの実行ステータスをテストするなどします。これらのデータを保存してテスト レポートを生成し、動的なグラフとデータ テーブルの形式で表示します。ユーザーは、テスト対象サーバーの TPS、CPU、メモリを簡単に確認できます。
展開

1. 複数のエージェントを備えた単一のコントローラ

2. 複数のコントローラーと複数のエージェント

Docker 上で nGrinder を実行する

コントローラーを実行する

docker pull ngrinder/コントローラー
docker run -d -v ~/ngrinder-controller:/opt/ngrinder-controller --name コントローラ -p 80:80 -p 16001:16001 -p 12000-12009:12000-12009 ngrinder/コントローラ

コントローラーは、テスト履歴と構成データを維持するために、/opt/ngrinder-controller の下にデータ フォルダーを作成します。データを永続化するには、コンテナ上のフォルダー /opt/ngrinder-controller をホスト上のフォルダーにマップする必要があります。

ポート情報:

80: デフォルトのコントローラー Web UI ポート。

9010-9019: エージェントはこれらのポートを介してコントローラ クラスターに接続します。

12000-12029: コントローラーはこれらのポートを通じてストレス テストを配布します。

エージェントを実行する

docker pull ngrinder/エージェント
docker run -d --name エージェント --link コントローラー:コントローラー ngrinder/agent

docker-compose クイックデプロイメント

docker-compose サービスを使用して、コントローラーと 2 つのエージェントを配置します。

ymlを書く

vim docker-compose.yml

ngrinder コントローラ 1:
 画像: ngrinder/コントローラ
 コンテナ名: ngrinder-controller-1
 ホスト名: ngrinder-controller-1
 ポート:
  - 8087:80
  - 16001:16001
  - 12000-12009:12000-12009
 ボリューム:
  - /data/ngrinder/コントローラ-1:/opt/ngrinder-コントローラ
ngrinderエージェント1:
 画像: ngrinder/エージェント
 コンテナ名: ngrinder-agent-1
 ホスト名: ngrinder-agent-1
 ボリューム:
  - /data/ngrinder/agent-1:/opt/ngrinder-agent
 指示:
  - 10.255.254.25:8087
ngrinderエージェント2:
 画像: ngrinder/エージェント
 コンテナ名: ngrinder-agent-2
 ホスト名: ngrinder-agent-2
 ボリューム:
  - /data/ngrinder/agent-2:/opt/ngrinder-agent
 指示:
  - 10.255.254.25:8087

起動する

docker-compose -f docker-compose.yml -d アップ

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • Dockerイントラネット侵入FRP展開の実装プロセスの分析
  • Docker を使用して MySQL および Redis サービスをデプロイする方法
  • Docker に Tomcat をインストールし、Springboot プロジェクトの WAR パッケージをデプロイする方法
  • Docker コンテナで DockerFile を使用して複数の Tomcat サービスをデプロイする手順
  • Docker イメージの作成、アップロード、プル、およびデプロイ操作 (Alibaba Cloud を使用)
  • docker+gitlab+gitlab-runnerの詳細なデプロイメント
  • Docker を使用してスタンドアロン Pulsar とクラスター化された Redis をデプロイする方法 (開発アーティファクト)
  • Docker デプロイメント Consul 構成プロセスの分析

<<:  uniapp は日付と時刻の選択機能を実装します

>>:  MySQLデータベースの名前を高速かつ安全に変更する方法(3種類)

推薦する

JS 正規マッチングの落とし穴の記録

最近、JS の正規表現マッチングの落とし穴を発見したのですが、その時はあまりにも奇妙だったので、何か...

Linux で Squid プロキシ サーバーを構築するための完全な手順

序文この記事では、Linux で Squid プロキシ サーバーを設定することに関する関連コンテンツ...

React forwardRefの使い方と注意点

これまで react.forwardRef は react の高階コンポーネントには適用できませんで...

CSS 複数 3 列適応レイアウト実装の詳細な説明

序文従来のWEBレイアウトに沿うため、すべてヘッダーとフッターモードの左・中央・右レイアウトで書かれ...

Docker Compose で環境変数を参照する方法の例

プロジェクトでは、さまざまな条件や使用シナリオを制御するために、docker-compose.yml...

Windows (コミュニティ エディション) に MySQL 8.0.18 をインストールするためのチュートリアル

この記事では、Windows で MySQL をインストールする方法について簡単に説明します。他にご...

MySQLデータファイルの保存場所を表示する方法

次のような疑問が湧くかもしれません。MySQLをローカル (自分のコンピュータ) にインストールした...

JS を使用して航空機戦争の小さなゲームを実装する

この記事の例では、参考のために航空機戦争ゲームを実装するためのJSの具体的なコードを共有しています。...

JavaScriptは、マウスが通過したときにドロップダウンボックスを表示するように実装します。

この記事では、マウスがドロップダウンボックスの上を通過するときにドロップダウンボックスを表示するため...

Linuxカーネルで中国語の文字を出力する方法

次のように、Windows/MacOS からログインした Linux の SSH ターミナルで簡単に...

Pengyou.com モバイル クライアントのダウンロード ページのデザイン共有 (画像とテキスト)

まずは簡単なデータを見てみましょう。 Googleが発表したレポートによると、 ①中国の都市の97%...

CSS+SVGでBステーションの課金効果を実現するサンプルコード

困難SVG グラフィックの 2 つのマスクの作成まず、コード左側のピンク色のボックスの内容ですこれに...

Linux ディスクのシーケンシャル書き込みとランダム書き込みの方法

1. はじめに● ランダム書き込みではヘッドがトラックを頻繁に変更するため、効率が大幅に低下します。...

HTML における br と br/ の違い

スタックフローからの回答:単に<br>だけで十分です。その他の形式は、XHTML との互...