Apache での ab パフォーマンス テスト結果を分析する

Apache での ab パフォーマンス テスト結果を分析する

私はパフォーマンス テストを行うために常に Loadrunner を使用してきました。 Loadrunner は、実際には非常に重いパフォーマンス テスト ツールです。機能が充実しており、非常に優れた肉切り包丁です。

ページで単純なパフォーマンス テストを実行するだけの場合は、Loadruner を使用することは適切な選択ではありません。

そこで、試しに小さなナイフを探しました。このナイフは本当に軽くて鋭いです。ここでは、皆さんの参考のために、AB テストのプロセスに関する私の理解の一部を記録します。

Baiduのホームページを例に挙げてみましょう。まず、knife が必要です。つまり、Apache をインストールします。インターネット上にチュートリアルがたくさんあるので、繰り返しません。この記事では、テストのために MacBook に付属している ab コマンドを使用します。

テストシナリオ: 10 人のユーザーをシミュレートし、Baidu ホームページに対して合計 100 件のリクエストを開始します。

テストコマンド: ab -n 100 -c 10 https://www.baidu.com/index.html

この記事では、主に ab のテストレポートを分析します。ab の使用方法については、別の日に新しい投稿で説明します。

テストレポート:

私の理解を一行ずつ説明させてください。以下のメモはオンライン資料を参考にしていますが、内容はすべて私自身の理解に基づいて手書きされています。私自身の理解を加えることで、読者の理解が深まることを願っています。

ボゴン:~ タン$ ab -n 100 -c 10 https://www.baidu.com/index.html

これは ApacheBench バージョン 2.3 です <$Revision: 1706008 $>

著作権 1996 Adam Twiss、Zeus Technology Ltd、http://www.zeustech.net/

Apache Software Foundation にライセンス供与されています (http://www.apache.org/)

//以上為apache的版本信息,與本次測試無關

www.baidu.com のベンチマーク (しばらくお待ちください).....完了

//以上內容顯示測試完成度,本次測試發起請求數量較少,完成較快,無中間過程顯示。在請求數量很多時會分行顯示當前完成數量。

サーバー ソフトウェア: bfe/1.0.8.14 //被測試的服務器所用的軟件信息,這里使用的是百度自己開發的反向代理Baidu Front End,類似nginx。

サーバーホスト名: www.baidu.com //被測主機名

サーバー ポート: 443 //被測主機的服務端口號,一般http請求的默認端口號是80,https默認使用443端口

SSL/TLS プロトコル: TLSv1.2、ECDHE-RSA-AES128-GCM-SHA256、2048、128 //加密協議

ドキュメントパス: /index.html //請求的具體文件

ドキュメントの長さ: 227 バイト//請求的文件index.html大小

同時実行レベル: 10 //并發級別,也就是并發數,請求中-c參數指定的數量

/本次測試總共花費的時間

完了したリクエスト: 100 //本次測試總共發起的請求數量

//失敗的請求數量。因網絡原因或服務器性能原因,發起的請求并不一定全部成功,通過該數值和Complete requests相除可以計算請求的失敗率,作為測試結果的重要參考。

//總共傳輸的數據量,指的是ab從被測服務器接收到的總數據量,包括index.html的文本內容和請求頭信息。

転送された HTML: 22700 バイト//從服務器接收到的index.html文件的總大小,等于Document Length*Complete requests=227bytes*100=22700 bytes

1 秒あたりのリクエスト数: 91.50 [#/sec] (平均) //平均(mean)每秒完成的請求數:QPS,這是一個平均值,等于Complete requests/Time taken for tests=100/1.093=91.50

//從用戶角度看,完成一個請求所需要的時間(因用戶數量不止一個,服務器完成10個請求,平均每個用戶才接收到一個完整的返回,所以該值是下一項數值的10倍。)

//服務器完成一個請求的時間。

転送速度: 92.32 [Kbytes/sec] 受信//網絡傳輸速度。對于大文件的請求測試,這個值很容易成為系統瓶頸所在。要確定該值是不是瓶頸,需要了解客戶端和被測服務器之間的網絡情況,包括網絡帶寬和網卡速度等信息。

接続時間 (ミリ秒)

最小 平均[+/- 標準偏差] 中央値 最大値

コネクト: 47 74 12.9 74 106

処理: 9 32 20.2 32 106

待機中: 9 29 19.1 27 98

合計: 66 106 20.8 106 195

//這幾行組成的表格主要是針對響應時間也就是第一個Time per request進行細分和統計。一個請求的響應時間可以分成網絡鏈接(Connect),系統處理(Processing)和等待(Waiting)三個部分。表中min表示最小值;mean表示平均值;[+/-sd]表示標準差(Standard Deviation) ,也稱均方差(mean square error),這個概念在中學的數學課上學過,表示數據的離散程度,數值越大表示數據越分散,系統響應時間越不穩定。 median表示中位數; max當然就是表示最大值了。

//需要注意的是表中的Total并不等于前三行數據相加,因為前三行的數據并不是在同一個請求中采集到的,可能某個請求的網絡延遲最短,但是系統處理時間又是最長的呢。所以Total是從整個請求所需要的時間的角度來統計的。這里可以看到最慢的一個請求花費了195ms,這個數據可以在下面的表中得到驗證。

一定時間内に処理されたリクエストの割合(ミリ秒)

50% 106

66% 109

75% 111

80% 114

90% 118

95% 154

98% 176

99% 195

100% 195 (最長リクエスト)

//這個表第一行表示有50%的請求都是在106ms內完成的,可以看到這個值是比較接近平均系統響應時間(第一個Time per request: 109.287 [ms] (mean))

以此類推,90%的請求是小于等于118ms的。剛才我們看到響應時間最長的那個請求是195ms,那么顯然所有請求(100%)的時間都是小于等于195毫秒的,也就是表中最后一行的數據肯定是時間最長的那個請求(longest request)。

上記の説明により、誰もがこれらのデータの意味を理解できると思います。誤りがある場合は、メッセージを残して修正してください。

これで、Apache での ab パフォーマンス テスト結果の分析に関するこの記事は終了です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援して頂ければ幸いです。

以下もご興味があるかもしれません:
  • Apache ab を使用して HTTP パフォーマンス テストを実行する
  • Apacheパフォーマンステストツールabの使用の詳細な説明
  • Apache AB パフォーマンステストツールの使用チュートリアル

<<:  ページ内のリストプルダウン効果を実現するための純粋なCSS

>>:  Firefox で Flash を再生するためのオブジェクトとパラメータの書き方

推薦する

IdeaでTomcatを起動したときに複数のリスナーが報告される問題を解決する

エラーのスクリーンショット例外が発生した場所が見つかりません。解決策: リソースディレクトリにlog...

Linux での vi (vim) の新しい使い方のまとめ

私は数年間 vi エディタを使ってきましたが、実用的な用途で使ったことはありませんでした。今日 Py...

Vueライフサイクルカメラの8つのフック関数

目次1. beforeCreateとcreated関数2. beforeMountとmount関数3...

VueはExcelデータをエクスポートするパブリック関数メソッドをカプセル化します

vue+element UI は Excel データをエクスポートするためのパブリック関数をカプセル...

CSSのclip-pathプロパティを使用して不規則なグラフィックを表示する

clip-path CSS プロパティはクリッピングを使用して要素の表示可能領域を作成します。領域内...

du コマンドを使用して Linux システム ディレクトリのサイズを取得する方法

Linux システムを使用したことがある人なら、Linux システムの ls コマンドは通常、ファイ...

MySQL 8.0 のインストール中に発生した 3 つの小さなエラーの概要

序文これまで当社ではMySQLの5.7シリーズを使用していましたが、バージョン8.0のリリースに合わ...

CSS で「プラス記号」効果を実装するためのサンプルコード

以下に示すプラス記号の効果を実現するには: この効果を実現するには、div 要素だけが必要です。 b...

Windows CVE-2019-0708 リモート デスクトップ コード実行脆弱性の再現問題

1. 脆弱性の説明マイクロソフトは2019年5月15日、CVE番号CVE-2019-0708のWin...

ミニプログラムはリストのカウントダウン機能を実装します

この記事の例では、ミニプログラムでリストカウントダウンを実装するための具体的なコードを参考までに共有...

DockerでGit環境を構築して構成するプロセス

DockerでGit環境を構成する仕事上、Docker 環境で GitLab リポジトリを操作する必...

VirtualBox+Ubuntu16でKubernetesクラスタを構築する実装

目次Kubernetesについて基本的な環境の準備VirtualBoxをインストールするUbuntu...

ポートマッピング後に Docker コンテナが突然接続に失敗する問題のトラブルシューティング プロセス

1. 背景通常、外部サービスを提供する必要がある Docker コンテナの場合、起動時に -p コマ...

MySQLデータベース入門:マルチインスタンス構成方法の詳しい説明

目次1. マルチインスタンスとは2. 複数インスタンスのインストールの準備3. MYSQLの複数イン...

コードブロックのハイライトをコピーして表示できる js プラグイン highlight.js + clipboard.js 統合

主に2つの側面から: 1. ハイライト/改行2. コードのコピーボタンこれら両方には既製のプラグイン...