Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Apache
チューニング
チューニング
• KeepAliveの設定
• コンテンツの圧縮転送
• 不要モジュールの削除
• シンボリックリンク先の参照許可
• TimeOutの設定
• DNS問い合わせの無効
• .htaccessの無効化
• Prefork MPM...
KeepAliveの設定
ディレクティブ 値 説明
KeepAlive On 同一クライアントに対し
コネクションを使い回す
MaxKeepAliveRequests 1ページあたりの平均
的なコンテンツ数 + α
1つのKeepAliveで受...
コンテンツの圧縮転送
「mod_deflate」モジュールを利用することで、Webク
ライアントへコンテンツを送信する際、データを圧縮する
ことができる。
データ圧縮時にCPUリソースを消費するが、転送速度向上
が可能。
不要モジュールの削除
デフォルトでは多くの拡張モジュー
ルが組み込まれているため、無駄に
消費する。
必要最低限の拡張モジュールのみ組
み込むことで、無駄な消費を抑え、
パフォーマンスを向上する。
Listen 80
ServerRoot "/...
シンボリックリンク先の参照許可
• 一般的には安全面のため、シンボリック先の参
照は許可しない。
• 許可しない場合、リクエストのたび対象コンテ
ンツがシンボリックリンクかチェックされ、性
能低下。
• 性能優先の場合、全コンテンツ許可。
<D...
Timeoutの設定
次の3つの待ち時間を同時に変更する。
• GETリクエストを受け取るのにかかる総時間
• POSTやPUTリクエストにおいて、次のTCPパケットが届
くまでの待ち時間
• レスポンスを返す際TCPのACKが返ってくるまでの...
DNS問い合わせの無効
クライアントのアドレスをログに記憶する際、DNS問い合
わせすることでホスト名で記憶できるが、パフォーマンス
が低下するため、ホスト名への変換はせず、IPアドレスで
記録する。
※後でコマンドによりホスト名に変換可能
H...
.htaccessの無効化
• 一般ユーザがサーバの設定を行う場合にhttpd.confの代
わりに使用する設定ファイル。
• 使用する場合は、リクエストのたびに、
.htaccessの有無を確認するため性能低下。
• 一般ユーザが設定を行わな...
prefork MPMのチューニング
ディレクティブ 値 説明
StartServers デフォルトの5~10 起動時の子プロセス数
MinSpareServers
MaxSpareServers
まずはデフォルトの5,10で様
子を見て、待機...
MaxClient
1プロセスあたりのメモリ消費量は厳密にはコピーオンライ
トにより親と共有している容量分を除いた値。
• 搭載メモリ容量(4GB)
• 1プロセスあたりのメモリ消費量(100MB)
※親との共有分(70%)は除き、30MB
•...
コピーオンライト
• Linuxは物理メモリを節約するため親プロセスと子プロ
セスで一部のメモリを共有する。
• 共有メモリ領域は/proc/<プロセスPID>/smpasで調査
可能だが、データ量が多く、大変。
• Perlスクリプトで調査可...
worker MPMのチューニング
ディレクティブ 値 説明
MaxClients デフォルト(ServerLimitの
25倍)
スレッド数の最大値
処理可能な同時リクエスト
数
MinSpareThreads
MaxSpareThreads...
セキュリティ
• サーバ情報の隠蔽
• URLエンコードで「/ スラッシュ」を許可
• デフォルトコンテンツの置換
• .htaccessの無効化
• ユーザホームの公開を特定ユーザに限定
• ドキュメントルートの変更
• 画像の直リンクの禁止
サーバ情報の隠ぺい
ディレクティブ 値 説明
ServerTokens ProductOnly クライアントに返信するサーバ応答
ヘッダに表示する情報を最小限にする
ServerSignature Off エラーメッセージ出力時にフッタを表
示...
URLエンコードで「/ スラッシュ」を許可
• 明示的に表示されるサーバ情報の他に、特定の動作パ
ターンからApacheを使用していることを知られてしま
う。
• URLに「%2f」が含まれている場合、Apache以外の
Webサーバは「/」に...
デフォルトコンテンツの置換
オリジナルのエラーページやルートドキュメントから使用
しているOSやパッケージが推測できないように、コンテン
ツを置き換えが必要。
■ソースからインストール
/usr/local/apache2/{cgi-bin,e...
ドキュメントルートの変更
サイト上のコンテンツの書き換えを防ぐため、デフォルト
のドキュメントルートから変更が必要。
画像の直リンクの禁止
画像コンテンツなどを第三者のサイトでURLを参照され、
インラインで表示されるような「直リンク」によって、
サーバに大きな負担がかかる場合がある。
# 参照元URLとして許可されるドメイン
SetEnvIf Referer...
iptables
インターネット
DNSサーバ
メンテナンスホスト
iptables設定サーバ
6
1
2
3
7
5
4
1. 受信パケット破棄
(送信に対する受信パケットは許可)
2. 送信パケットは全て許可
3. ループバックアドレスは全...
Upcoming SlideShare
Loading in …5
×

of

Apacheチューニング Slide 1 Apacheチューニング Slide 2 Apacheチューニング Slide 3 Apacheチューニング Slide 4 Apacheチューニング Slide 5 Apacheチューニング Slide 6 Apacheチューニング Slide 7 Apacheチューニング Slide 8 Apacheチューニング Slide 9 Apacheチューニング Slide 10 Apacheチューニング Slide 11 Apacheチューニング Slide 12 Apacheチューニング Slide 13 Apacheチューニング Slide 14 Apacheチューニング Slide 15 Apacheチューニング Slide 16 Apacheチューニング Slide 17 Apacheチューニング Slide 18 Apacheチューニング Slide 19 Apacheチューニング Slide 20
Upcoming SlideShare
Webサーバのチューニング
Next
Download to read offline and view in fullscreen.

43 Likes

Share

Download to read offline

Apacheチューニング

Download to read offline

Apacheチューニング

Related Books

Free with a 30 day trial from Scribd

See all

Related Audiobooks

Free with a 30 day trial from Scribd

See all

Apacheチューニング

  1. 1. Apache チューニング
  2. 2. チューニング • KeepAliveの設定 • コンテンツの圧縮転送 • 不要モジュールの削除 • シンボリックリンク先の参照許可 • TimeOutの設定 • DNS問い合わせの無効 • .htaccessの無効化 • Prefork MPMのチューニング • Worker MPMのチューニング
  3. 3. KeepAliveの設定 ディレクティブ 値 説明 KeepAlive On 同一クライアントに対し コネクションを使い回す MaxKeepAliveRequests 1ページあたりの平均 的なコンテンツ数 + α 1つのKeepAliveで受け付け るリクエスト数 KeepAliveTimeout 1ページ当たりの平均 的な転送時間+α クライアントからのリクエ ストがなくてもKeepAliveを 維持する秒数
  4. 4. コンテンツの圧縮転送 「mod_deflate」モジュールを利用することで、Webク ライアントへコンテンツを送信する際、データを圧縮する ことができる。 データ圧縮時にCPUリソースを消費するが、転送速度向上 が可能。
  5. 5. 不要モジュールの削除 デフォルトでは多くの拡張モジュー ルが組み込まれているため、無駄に 消費する。 必要最低限の拡張モジュールのみ組 み込むことで、無駄な消費を抑え、 パフォーマンスを向上する。 Listen 80 ServerRoot "/etc/httpd" DocumentRoot "/var/www/html/" User nobody Group nobody <IfModule prefork.c> ***** </IfModule> <IfModule worker.c> ***** </IfModule> MaxRequestsPerChild 0 ErrorLog logs/error_log <Directory /> Options FollowSymLinks AllowOverride None </Directory> 必要 最小限
  6. 6. シンボリックリンク先の参照許可 • 一般的には安全面のため、シンボリック先の参 照は許可しない。 • 許可しない場合、リクエストのたび対象コンテ ンツがシンボリックリンクかチェックされ、性 能低下。 • 性能優先の場合、全コンテンツ許可。 <Directory /> Options FollowSymLinks ※全コンテンツ許可 </Directory> # 許可しないディレクトリのみ個別指定 <Directory /home/user/html> Options -FollowSymLinks +SymLinksIfOwnerMatch </Directory>
  7. 7. Timeoutの設定 次の3つの待ち時間を同時に変更する。 • GETリクエストを受け取るのにかかる総時間 • POSTやPUTリクエストにおいて、次のTCPパケットが届 くまでの待ち時間 • レスポンスを返す際TCPのACKが返ってくるまでの時間 ※デフォルトは300(5分)。 多くのリクエストを処理するには待ち時間を短くする。
  8. 8. DNS問い合わせの無効 クライアントのアドレスをログに記憶する際、DNS問い合 わせすることでホスト名で記憶できるが、パフォーマンス が低下するため、ホスト名への変換はせず、IPアドレスで 記録する。 ※後でコマンドによりホスト名に変換可能 HostnameLookups Off ※デフォルトのまま
  9. 9. .htaccessの無効化 • 一般ユーザがサーバの設定を行う場合にhttpd.confの代 わりに使用する設定ファイル。 • 使用する場合は、リクエストのたびに、 .htaccessの有無を確認するため性能低下。 • 一般ユーザが設定を行わない場合は、パフォーマンス優 先およびセキュリティ面から、 無効化する。
  10. 10. prefork MPMのチューニング ディレクティブ 値 説明 StartServers デフォルトの5~10 起動時の子プロセス数 MinSpareServers MaxSpareServers まずはデフォルトの5,10で様 子を見て、待機プロセスの消 費が激しく、新たな子プロセ スの起動が間に合わない場合 は徐々に引き上げる。 子プロセスをMinから Maxの間で自動的に調 整する。 過度に待機プロセスが 発生しないように Min<Maxとなるよう待 機プロセスを生成する。 ServerLimit MaxClientsと同様 プロセス数の上限 MaxClients Apacheで割り当て可能なサー バのメモリ容量 / 1プロセスあ たりの平均メモリ消費量 *1 同時接続可能なクライ アント数の上限 MaxRequestsPerChild 子プロセスの起動はサーバに 負担がかかるため、大きな値。 ※静的ドキュメントの場合は0 ※CPU負荷、プロセスのメモ リサイズの時間経過から判断 新たな子プロセスを起 動するまでのリクエス ト回数の上限 ※メモリ完全共有状態 に戻る *1 コピーオンライトを考慮すると更に大きな値を設定可能
  11. 11. MaxClient 1プロセスあたりのメモリ消費量は厳密にはコピーオンライ トにより親と共有している容量分を除いた値。 • 搭載メモリ容量(4GB) • 1プロセスあたりのメモリ消費量(100MB) ※親との共有分(70%)は除き、30MB • OS利用分のメモリとして512MB 計算式:4GB – 512MB = 3500/30=116.66 ⇒余裕を持たせて「100」とする! ※ある程度リクエストを流して定常状態時の共有率を使用
  12. 12. コピーオンライト • Linuxは物理メモリを節約するため親プロセスと子プロ セスで一部のメモリを共有する。 • 共有メモリ領域は/proc/<プロセスPID>/smpasで調査 可能だが、データ量が多く、大変。 • Perlスクリプトで調査可能。 # <ファイル名>.pl `pgrep httpd` http://gihyo.jp/book/support/24svr
  13. 13. worker MPMのチューニング ディレクティブ 値 説明 MaxClients デフォルト(ServerLimitの 25倍) スレッド数の最大値 処理可能な同時リクエスト 数 MinSpareThreads MaxSpareThreads デフォルト(75、250) 待機スレッドをMinから Maxの間で自動的に調整す る。 ServerLimit MaxClients/ThreadsPerChild 以上 大きな値を設定し、余計な未 使用メモリを割り当てないよ うにする。 ThreadLimitと組み合わせ てMaxClientsに設定可能な 上限値。 ThreadsPerChild ThreadPerChildに設定可能 な子プロセス毎のスレッド数 の上限 1プロセスで生成されるス レッド数 StartServer 起動時の子プロセス数を指定 スレッドを割り当てるため大 きくする必要はない。
  14. 14. セキュリティ • サーバ情報の隠蔽 • URLエンコードで「/ スラッシュ」を許可 • デフォルトコンテンツの置換 • .htaccessの無効化 • ユーザホームの公開を特定ユーザに限定 • ドキュメントルートの変更 • 画像の直リンクの禁止
  15. 15. サーバ情報の隠ぺい ディレクティブ 値 説明 ServerTokens ProductOnly クライアントに返信するサーバ応答 ヘッダに表示する情報を最小限にする ServerSignature Off エラーメッセージ出力時にフッタを表 示しない
  16. 16. URLエンコードで「/ スラッシュ」を許可 • 明示的に表示されるサーバ情報の他に、特定の動作パ ターンからApacheを使用していることを知られてしま う。 • URLに「%2f」が含まれている場合、Apache以外の Webサーバは「/」に変換されるが、Apacheはデフォ ルトでは「/」を許可しないため「Not Found」 AllowEncodeSlashes On
  17. 17. デフォルトコンテンツの置換 オリジナルのエラーページやルートドキュメントから使用 しているOSやパッケージが推測できないように、コンテン ツを置き換えが必要。 ■ソースからインストール /usr/local/apache2/{cgi-bin,error,htdocs,icons} ■パッケージからインストール /var/www/{cgi-bin,error,html,icons}
  18. 18. ドキュメントルートの変更 サイト上のコンテンツの書き換えを防ぐため、デフォルト のドキュメントルートから変更が必要。
  19. 19. 画像の直リンクの禁止 画像コンテンツなどを第三者のサイトでURLを参照され、 インラインで表示されるような「直リンク」によって、 サーバに大きな負担がかかる場合がある。 # 参照元URLとして許可されるドメイン SetEnvIf Referer example.com authoritative_site # 正規表現で複数ファイル指定 <FilesMatch “.(gif|jpe?.g|png)$”> Order deny,allow Deny from all Allow from env=autoritative_site # 環境変数 </FilesMatch>
  20. 20. iptables インターネット DNSサーバ メンテナンスホスト iptables設定サーバ 6 1 2 3 7 5 4 1. 受信パケット破棄 (送信に対する受信パケットは許可) 2. 送信パケットは全て許可 3. ループバックアドレスは全て許可 4. Pingは相互許可 5. メンテナンスからssh(TCP 22)を許可 6. 全クライアントからHTTPを許可 (TCP 80) 7. サーバからのDNS問い合わせを許可 (UDP 53)
  • pondlab

    Feb. 6, 2018
  • yunghsinliang

    Nov. 14, 2017
  • ryohkawai

    May. 27, 2016
  • o2his

    Aug. 4, 2015
  • mstshimo

    Jul. 23, 2015
  • saltyshiomix

    Mar. 26, 2015
  • ssuser5213ef

    Feb. 24, 2015
  • magicvox

    Jan. 18, 2015
  • gorillalion

    Dec. 17, 2014
  • s10209jp

    Dec. 14, 2014
  • HiromichiYukawa

    Dec. 11, 2014
  • tosimitu

    Dec. 11, 2014
  • katsubemakito

    Dec. 11, 2014
  • toshimitsusogo

    Dec. 9, 2014
  • yukiokuno0113

    Dec. 9, 2014
  • uehi1206

    Dec. 9, 2014
  • ssuserdaf592

    Dec. 9, 2014
  • atsunorikamori

    Dec. 9, 2014
  • takeshi_seki

    Dec. 9, 2014
  • YMD16

    Dec. 9, 2014

Apacheチューニング

Views

Total views

13,873

On Slideshare

0

From embeds

0

Number of embeds

94

Actions

Downloads

87

Shares

0

Comments

0

Likes

43

×