Linuxシステムは、ApacheのWebは、徹底した最適化を詳細に説明しました

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プレゼンテーションのモード

  • ApacheWebサーバとオープンソースのサーバソフトウェアの今日の最も広範かつ最も安定したとして、
  • 仕事は、あなたが見ることができたときに、ソースコードパッケージはの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のディレクトリのプロパティ

  • ディレクトリのパーミッションの設定に使用する&lt;Directory目录路径&gt;と、&lt;/Directory&gt;このステートメントは、ディレクトリまたは仮想ディレクトリのアクセス権に基づいています
  • これらのコンテナ文のペアは、パッケージが配置されたディレクトリのパーミッションディレクトリとそのサブディレクトリにのみ行為を提供していることを具体的な文である間、ペアで表示される必要がありますされています

ディレクトリ属性パラメータ

パラメータ 効果
Options 特定のディレクトリに使用する機能の設定
AllowOverride 存在することが許可され.htaccessた命令のタイプのファイル
Require 設定されたディレクトリアクセス制御
Indexes ユーザーがディレクトリにアクセスすると、しかし、どのファイルのアクセス権を指定して、ディレクトリページの下にはデフォルトはありません、ディレクトリリスト内のファイルとサブディレクトリを返しませんでした
MultiViews 複数のビューの内容交渉Apacheインテリジェントな機能の。アクセスの対象ディレクトリが存在しない場合
ExecCGI ディレクトリで実行できるCGIスクリプト
FollowSymLinks システムは、ディレクトリ内にシンボリックリンクファイルを使用できます
Includes この関数は、サーバが備えることができます
IncludesNoExec この関数は、サーバー側が含まれることができますが、実行の禁止CGIスクリプトを
All 包含除了MultiViews之外所有特性,如果没有Options语句,默认为All

优化建议

  • 企业配置举例
    • Options应该设为None,以防止目录上内容暴露出去,造成安全隐患
    • AllowOverride设为None,禁. 止使用.htaccess文件,而将目录访问控制放在主配置文件的&lt;Directory&gt;&lt;/Directory&gt;之间
    • 根据目录的企业需求设置好Require的控制对象,以控制客户端的访问

おすすめ

転載: blog.51cto.com/14473285/2448628