このトピックでは、Alibaba Cloud PTS、Apache JMeter、ApacheBench(ab)、wrk などの主要なパフォーマンステストツールについて説明します。
Alibaba Cloud PTS
Alibaba Cloud Performance Testing Service(PTS)は、オンデマンドでパフォーマンステストタスクを実行できる商用パフォーマンステストツールです。 PTS は、最大数百万人の同時仮想ユーザーと毎秒数千万トランザクション(TPS)をサポートでき、JMeter と完全に互換性があります。 PTS は、シナリオオーケストレーション、API デバッグ、トラフィックカスタマイズ、トラフィック記録など、さまざまな機能を提供します。 PTS を使用すると、さまざまなレベルのユーザーアクセスをビジネスシステムに正確にシミュレートするパフォーマンステストスクリプトをすばやく作成できます。 これにより、システムのパフォーマンスと安定性を効率的に向上させることができます。
Alibaba Cloud PTS には次の機能があります。
O&M 不要ですぐに使用可能
PTS は、数百万人の同時仮想ユーザーと数千万の TPS を生成できるサービスとしてのソフトウェア(SaaS)ベースのサービスです。
マルチプロトコル互換性
HTTP1.1、HTTP2、JDBC、MQTT、Kafka、RocketMQ、Redis、WebSocket、RMTP、HLS、TCP、UDP、Spring Cloud、Dubbo、gRPC など、さまざまな主要プロトコルをサポートしています。
トラフィックカスタマイズ
地域、特定の通信事業者、IPv6 に基づいてトラフィックをカスタマイズできます。
安定性とセキュリティ
Alibaba によって開発されたエンジンは、セマフォモデルに基づいて動作し、高並行性を効果的に管理します。 Alibaba のダブル 11 ショッピングフェスティバルなどの主要イベントでの広範な使用を通じてテストされており、数十億レベルのトラフィック負荷でも安定性とセキュリティを維持できることが証明されています。
ワンストップパフォーマンステストソリューション
PTS を使用すると、コーディングなしで複雑なパフォーマンステストシナリオを構築できます。 PTS ソリューションは、テストシナリオの作成、テストモデルの設定、テストの開始、問題の分析と特定、レポートのレビューなど、パフォーマンステストのライフサイクル全体をカバーしています。
JMeter と 100% 互換性があります
Apache JMeter
JMeter は、Apache によって開発された Java ベースのパフォーマンステストツールです。 Apache JMeter には次の機能があります。
分散負荷テスト。
ユーザーフレンドリーなグラフィカルインターフェースを提供し、複雑なテストプランを作成および調整し、アサーションや論理コントローラーなどの高度な機能を使用して複雑なテストシナリオを処理できます。
高い拡張性:開発者とテスターは、特定の負荷テスト要件を満たすカスタムプラグインを作成できます。
強力なコミュニティサポート:JMeter は、開発者が積極的に参加する強力なオープンソースコミュニティによってサポートされています。
リソースメトリックとパフォーマンスレポートを表示できます。 ただし、使用可能な監視およびレポートメトリックの範囲は限られています。
JMeter は Java 仮想マシン(JVM)に依存しているため、単一の JMeter インスタンスは非常に高い並行レベルを処理できません。 JMeter は並行テストモデルのみをサポートし、スループットテストモデルはサポートしていません。
大規模分散テストの課題:JMeter が分散テスト機能を提供している場合でも、大規模な本番環境向けに JMeter をスケーリングすることはコストがかかり、複雑になる可能性があります。
テスト管理機能の欠如:JMeter は、テストケースと負荷テストスクリプトを管理するための機能を提供していません。
ApacheBench
ApacheBench(ab)は、HTTP ベースのアプリケーションとシステムのパフォーマンステスト用に設計されたコマンドラインツールです。 ApacheBench には次の機能があります。
優れたスケーラビリティ。
限定的なプロトコルサポート:主に HTTP プロトコルをサポートし、HTTPS や WebSocket などの他の主要なプロトコルはサポートしていません。
リクエスト制御:リクエストの総数、並行レベル、テスト期間を管理できます。
ユーザーフレンドリー:コマンドラインツールとして簡単に使用できます。
単一ノードテスト:分散負荷テスト機能やグラフィカルユーザーインターフェースなしでスタンドアロンツールとして動作します。
シナリオ管理、セッション管理、複雑なビジネス関連テストなどの高度な機能がありません。
単一ドメインテスト:各テストセッションは単一のドメインまたは IP アドレスに制限されています。
基本的なメトリック:テストプロセス中に限られた統計メトリックを提供し、システム負荷やその他の詳細なパフォーマンス指標をキャプチャしません。
wrk
wrk は、HTTP ベースのシステムとアプリケーション専用に設計されたベンチマークテストツールです。 wrk には次の機能があります。
軽量のパフォーマンステストツールとして、wrk はインストールとセットアップが簡単です。
使いやすい。
非同期イベント駆動フレームワークを使用し、単一マシンでの高並行性をサポートします。
分散負荷テスト機能なしでスタンドアロンツールとして動作します。
HTTP プロトコルのみをサポートします。
グラフィカルユーザーインターフェースやワークフローオーケストレーションやアサーションなどの機能は提供されないため、wrk は複雑なテストシナリオにはあまり適していません。
概要
項目 | Alibaba Cloud PTS | Apache JMeter | ApacheBench | wrk | |
コスト | 学習コスト | 低 | 中 | 低 | 低 |
デプロイと O&M コスト | デプロイ不要の SaaS サービス | スタンドアロンデプロイのコストは低く、分散デプロイのコストは高い | 低 | 低 | |
課金 | はい | オープンソース、無料 | オープンソース、無料 | オープンソース、無料 | |
分散テスト機能 | 分散テストのサポート | はい | はい、ただしデプロイと O&M コストは高いです。 | いいえ | いいえ |
負荷生成機能 | 単一マシンのパフォーマンスと安定性 | 自社開発エンジン、高 | 低 | 中 | 高 |
複数プロトコルのサポート | はい | はい | いいえ | いいえ | |
負荷レベル | 高、最大数百万人の同時仮想ユーザーと数千万の TPS | 低 | 低 | 低 | |
パフォーマンステストシナリオ構築 | クライアント側トラフィック記録 | はい、Google Chrome、iOS、Android の記録をサポート | いいえ | いいえ | いいえ |
プロセスオーケストレーション | はい、コーディング不要 | はい | いいえ | いいえ | |
出力パラメーター抽出、アサーション、およびロジックコントローラー | はい | はい | いいえ | いいえ | |
パフォーマンステストデータ構築 | データソースとしてのファイル | はい | はい | いいえ | いいえ |
データソースとしてのデータベース | はい | いいえ | いいえ | いいえ | |
テストデータの関数生成または二次処理 | はい | はい | いいえ | いいえ | |
パフォーマンステストモデル構築 | 並行モデル | はい | はい | はい | はい |
スループットモデル | はい | いいえ | はい | はい | |
ファンネルモデル | はい | いいえ | いいえ | いいえ | |
自動インクリメントまたは段階的インクリメントモデル | はい | はい | いいえ | いいえ | |
パフォーマンステストトラフィック構築 | 複数リージョントラフィックカスタマイズ | はい | いいえ | いいえ | いいえ |
IPv6 トラフィック | はい | いいえ | いいえ | いいえ | |
パフォーマンステストトラフィック管理 | パフォーマンステスト中の手動トラフィックレート調整 | はい | いいえ | いいえ | いいえ |
負荷と負荷ジェネレーターの動的インクリメント | はい | いいえ | いいえ | いいえ | |
パフォーマンステストデータの視覚化 | パフォーマンステスト中の多次元リアルタイムメトリック監視 | 数秒以内のリアルタイムデータ分析と多次元分析 | はい、ただし分析次元は限られています | いいえ | いいえ |
パフォーマンステストレポート | はい、完全なレポート | はい、簡単なレポート | はい、簡単なレポート | はい、簡単なレポート | |
テスト済みシステムの監視データとの関連付け | はい、Alibaba Cloud CloudMonitor データに関連付けることができます | いいえ | いいえ | いいえ | |
パフォーマンスベースライン機能 | はい | いいえ | いいえ | いいえ | |