ABのストレステスト
- Apacheのストレステストツールは使いやすいと様々な試験条件は、Webサーバーへの要求を開始シミュレートすることができ、ABが来ます
- ABツールは、ネットワークの伝送時間とユーザのローカルPCデータの計算時間が含まれていないため、サーバーのパフォーマンスは、非常に重要です処理する必要のため、時間の様々な指標を観察することによって決定することができ、ローカルWebサーバーでテスト要求を直接開始することができます最適な調整パラメータのためのWebサーバーのパフォーマンス、
ABストレステストツール
- 最適化のパフォーマンス・チューニング・プロセスを実行する、ABは、圧力テストツールの効果を最適化するために使用することができます
- 最初の使用のストレステストの前に抗体の最適化
- サービスを再起動し、最適化した後、その後、ストレステストを実施するためにABを使用
- 効果が大幅に最適化するかどうかを確認するには、2つのテストの結果の比較
- 一般的な最適化は、いくつかのテストを実施すべきである前と後、より客観テストの結果を比較した取り、Webサービスのパフォーマンスを評価するために、平均
ABツール
-
コマンドの形式
ab [options] 网站网址
-
パラメータ説明
-n、-c、-t、-v
-
例
/usr/local/httpd/bin/ab -n5000 -c900 www.bt.com/index.html
要件および同時ユーザーの合計数をテストする場合は、状況に応じて調整します
ABテストの結果は、重要なパラメータを示して
パラメータ | 説明 |
---|---|
Server Software |
http ヘッダー情報の応答データ |
Server Hostname |
要求url ホスト名 |
Server Port |
web サーバーソフトウェアのリスニングポート |
Document Path |
リクエストするurl ルートへの絶対パスを |
Document Length |
http ボディの長さの応答データ |
Concurrency Level |
同時ユーザー数 |
Time taken for tests |
これらの要求のすべては、それが完了するまでにかかる合計時間に処理され |
Complete requests |
これは、要求の合計数を表し |
Failed requests |
失敗した要求の総数 |
Total transferred |
応答データ要求の長さの和 |
Requests per second |
リクエストの数、サーバのスループット、毎秒プロセス |
Time per request |
平均時間、ユーザーの要求待ち |
Time per request |
各要求に対する実際の実行時間の平均値 |
Percentage of the requests served within a certain time (ms) |
配信要求処理で説明した各時間 |
テストケース
[root@localhost bin]# ab -n 20000 -c 500 www.kgc.com/index.html //使用命令测试
This is ApacheBench, Version 2.3 <$Revision: 1807734 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
Benchmarking www.kgc.com (be patient)
Completed 2000 requests
Completed 4000 requests
Completed 6000 requests
Completed 8000 requests
Completed 10000 requests
Completed 12000 requests
Completed 14000 requests
Completed 16000 requests
Completed 18000 requests
Completed 20000 requests
Finished 20000 requests
Server Software: Apache
Server Hostname: www.kgc.com
Server Port: 80
Document Path: /index.html
Document Length: 68 bytes
Concurrency Level: 500
Time taken for tests: 1.237 seconds
Complete requests: 20000
Failed requests: 0
Total transferred: 7300000 bytes
HTML transferred: 1360000 bytes
Requests per second: 16169.67 [#/sec] (mean)
Time per request: 30.922 [ms] (mean)
Time per request: 0.062 [ms] (mean, across all concurrent requests)
Transfer rate: 5763.60 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 5 60.3 1 1004
Processing: 0 14 49.6 6 808
Waiting: 0 12 49.5 5 808
Total: 1 19 78.2 8 1201
Percentage of the requests served within a certain time (ms)
50% 8
66% 9
75% 9
80% 10
90% 13
95% 17
98% 211
99% 406
100% 1201 (longest request)
Apache
動作モード
Apache
プレゼンテーションのモード
Apache
Webサーバとオープンソースのサーバソフトウェアの今日の最も広範かつ最も安定したとして、- 仕事は、あなたが見ることができたときに、ソースコードパッケージはのhttpdインストールされていることを多くのモデルがある
httpd-mpm.conf
にあるファイルextra/conf
のディレクトリは、 - 二つの主要なモードがあります。
event
モード、worker
モードprefork
モード
[root@apache1 bin]# ./httpd -l //查看apache当前工作模式
Compiled in modules:
core.c
mod SO.c
http_ core.c
event.c
event
プレゼンテーションのモード
event
これは、あるApache
操作の最新モード、およびそれworker
のパターンが違い、それが解決していることで、好きなkeep-alive
質問を無駄にしている長い接続スレッドのリソースによって占有時間をevent
それは、特定の互換性のないモジュールは失敗します遭遇した場合、それはフォールバックします作業モードworker
モードをevent
作業モードが必要とLinux
システムの(Linux 2.6+)
ためにepoll
有効にするために、サポートしています。追加する必要がありますHTTPS
(接続SSL
)
event
仕事
event
動作モードでは、これらを管理するためにいくつかの専用のスレッドがあるだろうkeep-alive
スレッドタイプを- そこサーバスレッドへの要求を超える真の要求は、実装後に、ですが、また、リリースにそれを可能にする場合
- このように、スレッドは、ノンブロッキングの非同期を達成するために、いくつかの要求を処理することができます。これは非常に同時場面で要求処理を強化します
event
説明するためのパラメータ
-
では
httpd-mpm.conf
、設定ファイル、次のとおりであるprefork
モジュール定義< IfModule mpm_event_module> StartServers 3 MinSpareThreads 75 MaxSpareThreads 250 ThreadsPerChild 25 MaxRequestWorkers 400 MaxConnectionsPerChild 0 </lfModule>
-
パラメータ説明
参数
说明
StartServers
プロセスの初期数は、サービスは、デフォルトでは、起動時に3 MinSpare Threads
アイドル状態の子プロセスの最小数、デフォルトの75 MaxSpare Threads
アイドル状態の子プロセスの最大数は、デフォルト250 ThreadsPerChild
作成された子プロセスあたりのスレッドの数、デフォルトは25です MaxRequestWorkers
クライアントに同じ時間を定義するアクセス要求の最大数は、デフォルトは400です MaxConnectionsPerChild
そのライフサイクルの各サブプロセスは、要求の最大数を可能にする要求が合計数がこの値に達した場合、子プロセスが終了し、0に設定した場合、子プロセスが終了することはありません。非ゼロ値は、メモリリークは、PHPによる実行を防止することができます
event
最適化のヒント
- デバッグする適切なパラメータを決定するために、環境に応じて製造することができます
- 最適化リファレンス
<IfModule mpm_event_module>
ServerLimit 1000
StartServers 20
MinSpareThreads 25
MaxSpareThreads 1200
ThreadsPerChild 50
MaxRequestWorkers 2000
MaxConnectionsPerChild 1000
</IfModule>
prefork
プレゼンテーションのモード
prefork
マルチチャネル処理モジュール(あるMPM
)、実装プロセスのタイプは、事前由来のweb
スレッドセーフなライブラリには適していませんサーバーで、システムの互換性の問題を回避するために必要なスレッド- 要求は、他の問題の要求には影響しない場合は、独立して各要求の場合に必要な優れた特性を有します
- エンタープライズアプリケーションの要件に合うように、強い自己規制を持って非常に少ない設定手順を必要と調整することができます
- 最も重要なことはしている
MaxClients
メモリのサイズが物理メモリを必要と超えないようにするためには、大きすぎてはならないと同時に、要求のピーク電位を処理するための値に十分な大きさに設定すること
prefork
動作モードのモード
- 、監視するための要求と応答を子プロセスを子プロセスを生成するための責任を別々の制御プロセス(親プロセス)、したがって、いくつかのスペア(メモリ内にあった
spare
、3 Fに応じて、新しい要求を持つ)、またはアイドル状態の子プロセス応答をスピードアップすることができます - 親プロセスは通常されて
root
結合させるために、として実行する80
ポートを、子プロセスは通常、アイテムを設定することができ、低特権ユーザで動作User
し、Group
設定を - 子プロセスを実行しているユーザーは、サイトのコンテンツへの読み取りアクセス権を持っている必要がありますが、他のリソースは、システムのセキュリティを確保するために、最小限の権限を持っている必要があります
- コンパイラのインストールの場合の動作のいかなるモードは、デフォルトの使用
prefork
モードを、次のことができますhttpd -l
表示しません
prefork
説明するためのパラメータ
-
では
httpd-mpm.conf
、設定ファイル、次のとおりであるprefork
モジュール定義< IfModule mpm_prefork_module> StartServers 20 MinSpareServers 10 MaxSpareServers 50 MaxClients 150 MaxRequestsPerChild 0 </lfModule>
- パラメータ説明
パラメータ | 説明 |
---|---|
ServerLimit |
プロセスの最大数 |
StartServers |
活性化したときに作成されているプロセスの数 |
MinSpareServers |
最小アイドルプロセス |
MaxSpareServers |
アイドルプロセスまで |
MaxClients |
ハンドル要求に子プロセスの数を作成します |
MaxRequestsPerChild |
0に設定すると、プロセスごとに処理要求の最大数、いくつかの要求まで、すなわち破壊プロセス、子プロセスは決して終了 |
prefork
最適化のヒント
- デバッグする適切なパラメータを決定するために、環境に応じて製造することができます
- 最適化リファレンス
<IfModule mpm_prefork_module>
ServerLimit 1000
StartServers 10
MinSpareServers 10
MaxSpareServers 30
MaxClients 1000
MaxRequestsPerChild 5000
</IfModule>
worker
プレゼンテーションのモード
worker
これは、マルチチャネル処理モジュール(あるMPM
)、ネットワーク・サーバがサポートするハイブリッドマルチスレッド、マルチプロセス- 原因、それは大規模な要求、およびシステムリソースを扱うことができるように、要求を処理するスレッドを使用するMPMは少ないプロセス・ベースのコストよりもあります
- しかし、また、複数のプロセスを使用して、各プロセスは、プロセスベースのMPMの安定性を得るために複数のスレッドが存在します
- MPMを制御するための最も重要なコマンドは次のとおりです。の設立できるように子プロセスあたりのスレッドの数を制御
ThreadsPerChild
の確立できるようにするコマンドとスレッドの合計数の制御をMaxClients
指示します
労働者の作品
- プロセスごとのスレッドの数が固定されていることができ、サーバは、負荷に応じて工程数を増加または減少させます
- 単一の制御プロセス(親)は、子プロセスを確立する責任があります。確立するために、それぞれの子プロセス
ThreadsPerChild
サービススレッドの数およびリスニングスレッド、スレッドモニタおよび監視サービス要求処理スレッドにアクセスし、応答を Apache
常にスタンバイ(維持spare
)や無料サービスのスレッドプールを、クライアントは新しいサービスを取得するために、新しいスレッドやプロセスの確立を待つ必要はありません- 親プロセス-など、すべてのある
root
バインドするために始めた人80
のポートは、次に、Apache
権限レベルの低いユーザの子プロセスとスレッドを確立するために、 User
そして、Group
設定手順Apache
子プロセスを実行しているユーザーを。子供がWebコンテンツへの読み取りアクセス権を持っているが、それは制限権利のために可能でなければなりません
worker
説明するためのパラメータ
パラメータ | 説明 |
---|---|
ServerLimit |
プロセスの最大数は、デフォルト値があります"16" |
ThreadLimit |
子プロセスあたりのスレッドの最大数は、デフォルト値があります“64” |
StartServers |
サーバーの開始を確立するために、子プロセスの数、デフォルト値があります"3" |
MaxClients |
同時に受け付けたアクセス要求の最大許容数(スレッドの最大数) |
MinSpareThreads |
デフォルト値はアイドルスレッドの最小数"75" |
MaxSpareThreads |
アイドルスレッドの最大数を設定します。デフォルト値は"250" |
ThreadsPerChild |
子プロセスあたりの永続的な実行スレッドの数を確立しました。デフォルト値は25 |
MaxRequestsPerChild |
要求の最大数を許可するサーボ彼らの一生の間に、それぞれの子を設定します。セット"0" 、子プロセスが終了することはありません |
労働者の最適化のヒント
- 企業のウェブサイトの最適化に応じて状況をデバッグするには
<IfModule mpm_worker_module>
ServerLimit 40
ThreadLimit 200
StartServers 20
MaxClients 1000
MinSpareThreads 25
MaxSpareThreads 100
ThreadsPerChild 200
MaxRequestsPerChild 1000
</IfModule>
Apacheのディレクトリのプロパティ
- ディレクトリのパーミッションの設定に使用する
<Directory目录路径>
と、</Directory>
このステートメントは、ディレクトリまたは仮想ディレクトリのアクセス権に基づいています - これらのコンテナ文のペアは、パッケージが配置されたディレクトリのパーミッションディレクトリとそのサブディレクトリにのみ行為を提供していることを具体的な文である間、ペアで表示される必要がありますされています
ディレクトリ属性パラメータ
パラメータ | 効果 |
---|---|
Options |
特定のディレクトリに使用する機能の設定 |
AllowOverride |
存在することが許可され.htaccess た命令のタイプのファイル |
Require |
設定されたディレクトリアクセス制御 |
Indexes |
ユーザーがディレクトリにアクセスすると、しかし、どのファイルのアクセス権を指定して、ディレクトリページの下にはデフォルトはありません、ディレクトリリスト内のファイルとサブディレクトリを返しませんでした |
MultiViews |
複数のビューの内容交渉Apache インテリジェントな機能の。アクセスの対象ディレクトリが存在しない場合 |
ExecCGI |
ディレクトリで実行できるCGI スクリプト |
FollowSymLinks |
システムは、ディレクトリ内にシンボリックリンクファイルを使用できます |
Includes |
この関数は、サーバが備えることができます |
IncludesNoExec |
この関数は、サーバー側が含まれることができますが、実行の禁止CGI スクリプトを |
All |
包含除了MultiViews 之外所有特性,如果没有Options 语句,默认为All |
优化建议
- 企业配置举例
Options
应该设为None
,以防止目录上内容暴露出去,造成安全隐患AllowOverride
设为None
,禁. 止使用.htaccess
文件,而将目录访问控制放在主配置文件的<Directory>
和</Directory>
之间- 根据目录的企业需求设置好
Require
的控制对象,以控制客户端的访问