2012年3月22日木曜日

Apacheチューニング


Apache tunning guide - prefork server

apacheのパフォーマンス向上をしたいぞという際に、どこを見るか何をいじるかの説明。

1,Apache
httpd-2.2.15-15.el6.centos.1.x86_64
※Cent6のyumでしれっと入るパッケージ

2,初期設定
/etc/httpd/conf/httpd.conf
===========================================================================
<IfModule prefork.c>
StartServers       8
MinSpareServers    5
MaxSpareServers   20
ServerLimit      256
MaxClients       256
MaxRequestsPerChild  4000
</IfModule>
===========================================================================

3,各設定の説明とか
StartServers Apacheを起動した際に立ちあがる子プロセスの個数
MinSpareServers アイドル子プロセスの最小個数
MaxSpareServers アイドル子プロセスの最大個数
ServerLimit 最大接続数の制限
MaxClients 最大接続数
MaxRequestsPerChild 子プロセスを何回再利用したらプロセスを削除し新規プロセスを立ち上げるかの回数(0の場合は)

4,チューニングの手引き
-- StartServersの設定
こちらの数字の個数で子プロセスが立ち上がります。よって、MaxSpareServersと差分がありすぎると、
アクセスを受ける度に子プロセスを生成する必要があり、そこでサーバのリソースを使う事となります。
一方プロセスを多く立ち上げておくと、その分CPU使用率やメモリを確保するためサーバのリソース以上の
子プロセスを立ち上げる設定をしてしまうと、最悪の場合メモリを使い果たしてサーバがダウンしてしまいます。

-- MinSpareServersの設定
最小のアイドル子プロセス数です。
あまりに少なくしてしまうと、StartServersと同じくプロセス立ち上げにリソースを使う事となります。

-- MaxSpareServersの設定
最大のアイドル子プロセス数です。

-- ServerLimitの設定
Apacheサーバの最大接続数を表します。
prefork/workerに関わらず、最大接続数を設定する際にこの設定を実施します。
256以上の同時接続をしたい場合は、明示的にServerLimitの設定をする必要があります。
また、ServerLimitの設定は、1~20000までの間で設定する必要があります。

-- MaxClientsの設定
生成される子プロセスの最大個数
子プロセスの個数はメモリの容量と相談しながら、最適な数値を見つける必要があります。
補足:サーバの搭載メモリ > apacheのプロセスが掴むメモリ容量 x 最大プロセス数

-- MaxRequestPerChildの設定
アプリケーションの特性等を考えて設定する必要があります。
都度メモリの解放等を行いたい場合は、0はプロセスの解放を行わず、一生使いまわします。
0に設定した際はアプリケーションのメモリリークでプロセスのメモリ使用量が永遠に増えたり、
サーバ負荷によってフレキシブルにプロセス数が下がり、サーバのリソースを下げてくれる事はできません。
尚、0にするメリットとしてはプロセスの作成や削除が行われないため、サーバのリソースにやさしいです。

以上を踏まえて快適なapacheライフを過ごしてみてはいかがでしょうか。

0 件のコメント:

コメントを投稿