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 を再生するためのオブジェクトとパラメータの書き方

推薦する

Alibaba Cloud サーバーの購入とインストール方法

1. サーバーを購入するこの例では、購入したサーバーはAlibaba Cloudです。大学生はAli...

React サーバーサイドレンダリング原則の分析と実践

ほとんどの人は、サーバーサイド レンダリング (SSR と呼んでいます) の概念について聞いたことが...

Intelli Idea で Tomcat 設定が見つからない問題の解決方法

2日前に新しい会社に入社しました。その会社ではIntelli Ideaを使っています。Eclipse...

Vue での ref の使用法とデモンストレーション

ref 定義:要素またはサブコンポーネントの参照情報を登録するために使用されます。参照情報は、親コン...

MySQL学習データベース操作DML初心者向け詳細解説

目次1. ステートメントを挿入する1.1 行を挿入する1.2 複数行を挿入する1.3 クエリステート...

mysql-connector-java8.0.27 へのアップグレードに関する注意事項

最近、オンライン セキュリティ スキャンにより、MySQL コネクタに脆弱性が見つかりました。確認し...

Vue.js スタイルレイアウト Flutter ビジネス開発共通スキル

シャドウスタイルにおけるフラッターとCSSの対応UIによって指定されたCSSスタイル 幅: 75px...

Ubuntu 16.04 mysql5.7.17 リモートポート 3306 を開く

MySQLへのリモートアクセスを有効にするデフォルトでは、MySQL ユーザーにはリモート アクセス...

WindowsはVMwareを使用してLinux仮想マシンを作成し、CentOS7.2オペレーティングシステムをインストールします。

目次1. ウィザードに従って仮想マシンを作成します2. オペレーティングシステムをインストールします...

Linux アカウントのパスワードを変更する詳細な例

個人アカウントのパスワードを変更する一般ユーザーが個人アカウントのパスワードを変更する場合は、他のコ...

JavaScriptでマクロを使用する方法

言語では、DSL を実装するためにマクロがよく使用されます。マクロを使用すると、開発者は JSX 構...

vscode で console.log を書く 2 つの簡単な方法の詳細な説明

(I) 方法 1: 事前にスクリプト タグ内に直接定義します。この HTML ファイルにのみ適用され...

HTML フォームタグチュートリアル (2):

このチュートリアルでは、ウェブデザインにおけるFORMフォームタグのさまざまな属性の応用を紹介します...

5分でReactルーティングについてお教えします

目次ルーティングとは純粋コンポーネントの基本的な使用純粋なコンポーネントの使用に関する注意事項ルーテ...

要素 UI に基づいてクエリ コンポーネントを段階的にカプセル化する方法

目次関数基本的なクエリ関数クエリ条件の初期化ページのレンダリングクエリと表示の最適化をさらに強化プル...