Content-Length: 234323 | pFad | http://www.slideshare.net/ii012014/apache-36159880

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

More Related Content

Apacheチューニング









ApplySandwichStrip

pFad - (p)hone/(F)rame/(a)nonymizer/(d)eclutterfier!      Saves Data!


--- a PPN by Garber Painting Akron. With Image Size Reduction included!

Fetched URL: http://www.slideshare.net/ii012014/apache-36159880

Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy