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種類)

推薦する

MySQLで時間を判定条件として使用する方法

背景: 開発プロセスでは、現在の月、現在の日、現在の時間、今後数日など、時間を判断条件としてデータを...

Linuxファイルを表示するコマンドの詳細な説明

Linuxファイルを表示する方法ファイルの内容を表示するコマンド: catは最初の行からコンテンツを...

航空機戦争ゲームを実装するためのネイティブJS

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

JavaScript 関数はランダムな色の検証コードをカプセル化します (完全なコード)

数字、文字、またはランダムな色の数字と文字の混合で構成される n 桁の確認コード。以下に完全なコード...

データベースアカウントのパスワード暗号化の詳細な説明と例

データベースアカウントのパスワード暗号化の詳細な説明と例データベースアカウントとパスワードはデータベ...

表の境界線の CSS 構文

<br />表の境界線の CSS 構文具体的な内容には、上境界線の幅、右境界線の幅、下境...

CSS 等高レイアウトの一般的な方法

等高レイアウト同じ親コンテナー内の同じ高さの子要素のレイアウトを指します。等高レイアウトの実装の観点...

MySQLデータベースの数千万件のデータクエリとストレージの詳細な説明

目次百万レベルのデータ処理ソリューションデータストレージ構造設計クエリステートメントの最適化1000...

jsはシンプルなショッピングカートモジュールを実装します

この記事の例では、参考までに、シンプルなショッピングカートモジュールを実装するためのjsの具体的なコ...

Dockerを使用してクローンリポジトリを使用してGitイメージを構築する

概要私は 1 年以上 Docker を使用しています。最近、サービスをすばやくオーケストレーションし...

Nginx+SSL による双方向認証を実装するためのサンプル コード

まずディレクトリを作成する cd /etc/nginx mkdir ssl cd ssl CA と自...

よく使われるCSSスタイル(レイアウト)の詳しい説明

新しいCSS3プロパティと互換性ありCSS3では、プラグインprefixfree.min.jsを使用...

mysqlは複数の主キーを設定する操作を実装します

ユーザーテーブル、ID番号は一意である必要があります、携帯電話番号、電子メールアドレスは一意である必...

レスポンシブWebデザイン学習(3) - モバイルデバイスでのWebページのパフォーマンスを向上させる方法

序文モバイル デバイスでは、帯域幅とプロセッサ速度の制限により、Web ページのパフォーマンスに対す...