著者はハードウェアに強い興味を持ち、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
データベースの設定だけで済みます。
- アプリケーション名
- テストケース名
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