序文
ウェブサイトのパフォーマンスストレステストは、サーバーのウェブサイトのパフォーマンス調整プロセスに不可欠な部分です。テスト環境の準備ができたら、ウェブサイトでストレステストを実行するにはどうすればよいですか。
ストレステストには、ab、http_load、webbench、siege、jmeter、lr、locustなどの多くのツールがあります。この記事では、非常に使いやすい軽量のストレステストツールabを紹介します。
ApacheBenchは、abと呼ばれるApacheサーバーに付属するWebストレステストツールです。
abはコマンドラインツールでもあり、ロードを開始するローカルマシンの要件が非常に低くなっています。abコマンドによると、多数の同時アクセススレッドを作成して、複数の訪問者が同時にURLアドレスにアクセスすることをシミュレートできるため、ターゲットサーバーのテストに使用できます。負荷圧力。
一般に、abツールは小さくてシンプルで、習得が速く、必要な基本的なパフォーマンスインジケーターを提供できますが、グラフィカルな結果がなく、監視できません。
abの原理:abコマンドは、複数の同時アクセススレッドを作成して、URLアドレスに同時にアクセスする複数の訪問者をシミュレートします。
そのテストターゲットはURLに基づいているため、apacheの負荷圧力、およびnginx、lighthttp、tomcat、IISなどの他のWebサーバーの圧力をテストするために使用できます。
abコマンドは、負荷を発行するコンピューターに対する要件が非常に低く、高いCPUも大量のメモリも使用しません。
ただし、ターゲットサーバーに大きな負荷がかかるため、原理はCC攻撃に似ています。また、独自のテストと使用にも注意を払う必要があります。そうしないと、一度に負荷がかかりすぎます。ターゲットサーバーのリソースが不足したり、クラッシュしたりする可能性があります。
パフォーマンステストのプロセスでより重要ないくつかの指標があります。
1.スループット率(1秒あたりのリクエスト数)
サーバーの同時処理機能の定量的な説明(reqs / s)。これは、特定の数の同時ユーザーの下で単位時間あたりに処理される要求の数を指します。特定の数の同時ユーザーに対して単位時間あたりに処理できる要求の最大数は、最大スループットレートと呼ばれます。
注意:スループット率は、同時ユーザーの数に基づいています。この文は2つの意味を表しています。
2.同時接続数
同時接続数とは、特定の時間にサーバーが受け入れたリクエストの数を指し、簡単に言えばセッションです。
3.同時ユーザー数(同時実行レベル)
この概念と同時接続の数の違いに注意してください。ユーザーは同時に複数のセッション、つまり接続の数を持つことができます。 HTTP / 1.1では、IE7は2つの同時接続をサポートし、IE8は6つの同時接続をサポートし、FireFox3は4つの同時接続をサポートするため、同時ユーザーの数をこのベースで割る必要があります。
4.ユーザーリクエストの平均待機時間(リクエストあたりの時間)
計算式:すべてのリクエストの処理にかかる時間/(リクエストの総数/同時ユーザー)、つまり:
Time per request=Time taken for tests/(Complete requests/Concurrency Level)
5.サーバーの平均リクエスト待機時間(リクエストあたりの時間:すべての同時リクエスト全体)
計算式:すべてのリクエストを完了するのにかかる時間/リクエストの総数、つまり:
Time taken for/testsComplete requests
ご覧のとおり、これはスループットレートの逆数です。同時に、平均ユーザーリクエスト待機時間/同時ユーザー数にも等しくなります。
Time per request/Concurrency Level
centosの下にabをインストールするのは非常に簡単で、yumを使用して直接インストールできます。
yum install -y httpd-tools
[ root@yoyo ~]# yum install -y httpd-toolsDependencies Resolved=================================================================================================================================
Package Arch Version Repository Size
=================================================================================================================================
Installing:
httpd-tools x86_64 2.4.6-88.el7.centos base 90 k
Installing for dependencies:
apr x86_64 1.4.8-3.el7_4.1 base 103 k
apr-util x86_64 1.5.2-6.el7 base 92 kTransaction Summary
=================================================================================================================================
Install 1Package(+2 Dependent packages)Total download size:286 k
Installed size:584 k
Downloading packages:(1/3): apr-util-1.5.2-6.el7.x86_64.rpm |92 kB 00:00:00(2/3): apr-1.4.8-3.el7_4.1.x86_64.rpm |103 kB 00:00:00(3/3): httpd-tools-2.4.6-88.el7.centos.x86_64.rpm |90 kB 00:00:00---------------------------------------------------------------------------------------------------------------------------------
Total 1.0 MB/s |286 kB 00:00:00
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
Installing : apr-1.4.8-3.el7_4.1.x86_64 1/3
Installing : apr-util-1.5.2-6.el7.x86_64 2/3
Installing : httpd-tools-2.4.6-88.el7.centos.x86_64 3/3
Verifying : httpd-tools-2.4.6-88.el7.centos.x86_64 1/3
Verifying : apr-util-1.5.2-6.el7.x86_64 2/3
Verifying : apr-1.4.8-3.el7_4.1.x86_64 3/3Installed:
httpd-tools.x86_64 0:2.4.6-88.el7.centos Dependency Installed:
apr.x86_64 0:1.4.8-3.el7_4.1 apr-util.x86_64 0:1.5.2-6.el7 Complete!
インストールが完了したら、ab-Vを使用してバージョン番号バージョン2.3を表示します
[ root@yoyo sbin]# ab -V
This is ApacheBench, Version 2.3<$Revision:1430300 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
ヘルプ情報を表示するには、ab -helpを使用します。最も重要なのは、-c同時接続数と-n接続総数です。
[ root@yoyo sbin]# ab -help
Usage: ab [options][http[s]://]hostname[:port]/path
Options are:-nリクエストリクエストの総数を実行するために、デフォルトで1つのリクエストが実行されます
- c同時実行性一度に実行される複数の要求の数。これは同時実行の数です。
- t timelimitは、ベンチマークに使用される最大秒数です。これを使用して、固定の合計時間でサーバーをベンチマークします。デフォルトでは、時間制限はありません。
- ■timeoutタイムアウトするまで待機する最大秒数。デフォルト値は30秒です。
- bウィンドウサイズTCP送信/受信バッファのサイズ(バイト単位)。
- Bアドレス発信接続時にバインドされるアドレス。
- p postfilePOSTするデータを含むファイル。また、設定することを忘れないでください-T。
- u putfilePUTデータを含むファイル。また、設定することを忘れないでください-T 。
- T content-type Content-タイプはPOSTに使用されます/PUTデータのコンテンツタイプコンテンツタイプタイトル。例:'application/x-www-form-urlencoded'デフォルトは' 'text/plain'
- v verbosity verbosity印刷するトラブルシューティング情報の数、詳細レベルの設定-4以上の印刷ヘッダー情報、3以上の印刷応答コード(404,200など)、2以上は警告とメッセージを出力します。
- w結果をHTMLテーブル形式で出力します。デフォルトでは、背景が白の2列のテーブルです。
- iGETの代わりにHEADリクエストを実行します。
- x属性は次のように使用されます<table>属性文字列。属性が挿入されます<table here>。
- y属性は次のように使用されます<tr>属性文字列。
- z属性は次のように使用されます<td>属性文字列。
- C属性は、リクエストにCookieを追加します。パラメータには通常名前が付けられます=値のペアの形式。このフィールドは繰り返し可能です。
- 'AcceptなどのH属性-Encoding:すべての通常のヘッダー行を挿入した後のgzip '-属性は基本的なWWW認証を追加します。この属性は、コロンで区切られたユーザー名とパスワード、authです。-username:password -P属性は基本的なプロキシ認証を追加します。属性はコロンで区切られたユーザー名とパスワードです。-auth-username:password -X proxy:ポートはプロキシサーバーとポート番号を使用します。
- Vバージョン番号を出力して終了します。
- k HTTPKeepAlive関数を使用します。
- dパーセントサービステーブルを表示しません。
- S信頼度の見積もりと警告を表示しません。
- q 150を超えるリクエストを行う場合、進行状況を表示しません。
- gfilename収集したデータをgnuplot形式のファイルに出力します。
- efilenameパーセンテージを提供するCSVファイルを出力します。
- rエラーを受信したソケットを終了しないでください。
- h使用状況情報(このメッセージ)を表示します。
- Z暗号スイートciphersuiteはSSLを指定します/TLS暗号スイート(openssl暗号を参照)
- fプロトコルはSSLを指定します/TLSプロトコル(SSL3, TLS1, TLS1.1, TLS1.2 or ALL)
同時リクエスト数は10件、合計100件のリクエストが送信されます。テストアドレスは http://47.104.xx:81 /
です。テスト環境がない場合は、圧力テストBaiduhttps:// www.baidu.com /
を試すことができます。
ab -c 10 -n 100 http://47.104.x.x:81/
[ root@yoyo sbin]# ab -c 10-n 100 http://47.104.x.x:81/
This is ApacheBench, Version 2.3<$Revision:1430300 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
# - - - - - - - - - - - - - 上記のab関連バージョン情報-------------------------#Benchmarking 47.104.x.x(be patient).....doneServer Software: nginx/1.12.0 #サーバーソフトウェアバージョン
Server Hostname:47.104.x.x #要求されたURL
Server Port:81 #要求されたポート番号ドキュメントパス:/ #要求されたサーバーのパス
Document Length:11270 bytes #単一の要求ページの長さの単位はバイト同時実行レベルです:10 #並行性
Time taken for tests:19.130 seconds #合計時間のかかる124秒
Complete requests:100 #リクエスト総数
Failed requests:0 #失敗したリクエスト
Write errors:0
Total transferred:1140400 bytes #送信されたhttpヘッダー情報の合計バイト数
HTML transferred:1127000 bytes #実際のページで転送されたバイト数
Requests per second:5.23[#/sec](mean) #1秒あたりのリクエスト数
Time per request:1913.021[ms](mean) #各ユーザーの平均待機時間
Time per request:191.302[ms](mean, across all concurrent requests) #サーバーが処理するのに平均してどのくらい時間がかかりますか
Transfer rate:58.22[Kbytes/sec] received #1秒あたりに取得されるデータの量接続時間(ms)
min mean[+/-sd] median max
Connect:040197.201002
Processing:218241687.0142610556
Waiting:18131199.94388754
Total:218641679.41429 10556Percentage of the requests served within a certain time(ms)50%1429 # 50%ユーザーのリクエストは1429ms以内に返されます
66 %203575%249380%284590%344995%517498%785599%10556100%10556(longest request)
一般的なテスト環境サーバーとストレステストabサーバーは同じであってはならないことに注意してください。同じでない場合、結果全体に影響します。
Recommended Posts