Linux上にJMeterテスト環境を構築する

著者はハードウェアに強い興味を持ち、Jmeterを用いて負荷テストを実施。CentOS 7上にJmeter、InfluxDB、Grafanaをデプロイした過程を記録。Jmeterのインストールとコマンド使用方法、InfluxDBの特徴とDockerインストール方法、そしてGrafanaの簡単なデプロイと設定について解説。高性能プログラムのパターンに関する経験と参考文献もまとめた。

背景

データ表示に加えて、Webパネルを別途用意するメリットは何か?

考えたことが全て思い込みで、試してみないと分からない。 Don’t use GUI mode for load testing! only for Test creation and Test debuggin.

公式的にはコマンドラインでレポートを取得し、GUIで表示する方法にはデータの誤差があるとのことです。JMeterの理解は深くないですが、せめてバージョン__INLINE_CODE_0__のコンソールパネルを試してみる理由が少なくとも見つかりました。

オープンソース中国の投稿ですが、主要コンポーネントのデプロイは友好的ではありません。必要なファイルも公众号でフォローしないとダウンロードできないため、次世代として当然__INLIN_ITALIC_1____に置き換えました。結局のところ、自分のサーバーが国内にあること、クロスボーダーのソースアドレスへのアクセス速度が遅いことが問題です。少なくともミラーサービスは、アリババクラウドに無料のアクセラレーションがあります。

dockerのインストールについては、ここでは詳述しません。以前の記事を参照してください。


今後の内容は大きく分けて、基本的なテスト環境構築と、各コンポーネントの簡単な説明です。

Jmeter

Apache JMeterは、Apache Software Foundationが開発したJavaベースの負荷テストツールです。ソフトウェアに負荷をかけるために使用され、当初はWebアプリケーションのテスト用に設計されましたが、その後他のテスト分野にも拡張されています。静的なリソースや動的なリソースなど、さまざまなものをテストできます。例えば、静的ファイル、Javaマイクロサービス、CGIスクリプト、Javaオブジェクト、データベース、FTPサーバーなどです。JMeterを使用すると、サーバー、ネットワーク、またはオブジェクトに巨大な負荷をシミュレートし、さまざまなプレッシャーカテゴリー下での強度をテストし、全体的なパフォーマンスを分析できます。また、アサーションを含むスクリプトを作成することで、アプリケーションの機能/回帰テストを行い、プログラムが期待される結果を返すことを検証できます。最大限の柔軟性を実現するため、JMeterは正規表現を使用してアサーションを作成できます。

Apache JMeterは、静的なリソースと動的なリソース(ファイル、サーブレット、Perlスクリプト、Javaオブジェクト、データベースおよびクエリ、FTPサーバーなど)のパフォーマンスをテストするために使用できます。サーバー、ネットワーク、またはオブジェクトに過剰な負荷をかけて強度をテストしたり、さまざまなプレッシャーの種類下での全体的なパフォーマンスを分析したりすることができます。パフォーマンスのグラフ解析や、高並行負荷テストを行うことも可能です。

JMeter CentOS7

インストールパッケージ

yum install java-1.8.0-openjdk -y && \
wget https://mirrors.bfsu.edu.cn/apache//jmeter/binaries/apache-jmeter-5.4.tgz && tar -xf apache-jmeter-5.4.tgz

環境変数を設定する

export JMETER_HOME=$HOME/jmeter/apache-jmeter-5.4
export PATH=$JMETER_HOME/bin:$PATH

JMeter コマンド

最終、Grafana控制面板,可以不输入-l参数,在__INLINE_CODE_2__コントロール台のデータを確認

jmeter -n -t /tmp/order-500-10s.jmx -l /tmp/jmeter-order-report-20200109/order-500-10s.jtl
# 一般不用测试结果和测试报告,简化命令
jmeter -n -t /tmp/order-500-10s.jmx

InfluxDB

InfluxDBは、外部依存なしでGo言語で記述されたオープンソースの分散型時系列データベースです。現在では、主にDevOpsモニタリングデータ、アプリMetrics、IoTセンサーデータ、リアルタイム解析データなど、大量のタイムスタンプデータを保存するために使用されています。

InfluxDBの特徴

InfluxDBの特徴は、以下の9点に集約できます。

  • 構造(パターン)なし:任意の数の列が可能です。
  • メトリクスの保存期間を設定できます。
  • 統計を支援するため、時間に関連する関数(最小値、最大値、合計、件数、平均、中央値など)に対応。
  • サポートするストレージポリシー:データの削除・変更に利用可能。(InfluxDBはデータ削除・変更の方法を提供していません。)
  • 継続クエリのサポート:データベース内で自動的にスケジュールされた一連の文であり、ストレージポリシーと組み合わせることでInfluxDBのシステムリソース使用量を削減できます。
  • ネイティブなHTTPサポート、内蔵HTTP API。
  • SQLに類似した構文をサポート。
  • クラスタ内のデータレプリカ数を設定可能。
  • 定期サンプリングデータをサポートし、別のmeasurementに書き込むことで、細分化されたデータストレージを可能にする。

InfluxDB Docker インストール

mkdir influxdb && cd influxdb && \
docker run -p 8086:8086 -d --name influxdb -v $PWD:/var/lib/influxdb influxdb:1.7

コンテナに入り、コマンドを実行し、手動でデータベースを作成する。

root@bce0a55bbc72:/# influx
Connected to http://localhost:8086 version 1.7.10
InfluxDB shell version: 1.7.10
> 交互面板执行命令

InfluxDB データベースとユーザーの作成

データベース作成:create database jmeter_t2 データベース表示: データベースを切り替えます:use jmeter_t2 ユーザーを作成:パスワード’admin’でユーザー"admin"を全権限で作成 ユーザー表示

> show users
user  admin
----  -----
admin true

ユーザー権限が表示されれば、データベースの準備は完了です。

Grafana

テストケース作成中に、グラフ表示はそれほど必須ではないことがわかった。インターフェースの__INLINE_CODE_0__データはコマンドライン実行で確認できるし、主にプログラム内部の処理時間を把握したいだけだ。

簡単な展開

コンソールはタグによるテスト結果のフィルタリングをサポートしており、通常は InfluxDBデータベースの設定だけで済みます。

  • アプリケーション名
  • テストケース名

grafana

docker run -d --name=grafana -p 3000:3000 grafana/grafana:7.3.1

ウェブ版では、サンプラー間隔により計算の**強調** 太字 斜体 リンク が発生します。

資料には、__INLINE_CODE_0__をカスタマイズする方法も記載されています。

追記

  • 高性能なプログラムパターンは必ずしもone loop threadであり、ロック、キューへの入出力は不要なパフォーマンス損失を引き起こす。
  • コアビジネスロジックの処理時間が、他のコードの導入にかかる時間よりも長い。効率を効果的に高めるには並行処理が不可欠であり、コア処理時間が十分短い場合にのみ、他のコードの導入は慎重に行うべきである。

参照資料

  • 申し訳ありませんが、翻訳する中国語のテキストが提供されていません。テキストを提供していただければ、日本語に翻訳します。
  • 申し訳ありませんが、翻訳する中国語のテキストが提供されていません。テキストを提供していただければ、日本語に翻訳します。
  • 申し訳ありませんが、翻訳する中国語のテキストが提供されていません。テキストを提供していただければ、日本語に翻訳します。
  • 申し訳ありませんが、翻訳する中国語のテキストが提供されていません。テキストを提供していただければ、日本語に翻訳します。
  • To install Apache JMeter in CentOS7
金融ITプログラマーのいじくり回しと日常のつぶやき
Hugo で構築されています。
テーマ StackJimmy によって設計されています。