Choco Soft

Nadesiko DE RDB

Choco Soft header image 2

PHPを最大に生かすApacheのチューニングとは?

2018年04月14日 · コメント(0) · Apache, PHP, Server

ApacheにPHPを組み合わせるのは一般的だが、今まではほぼデフォルトで運用して来ました。
ある日、突然WEBサイトが遅くなったのでこれを機会にチューニングというか最適化を調べてみる事に。

まずApacheですが、「httpd.config」からやってみよう。
いろいろとググってみると、【prefork】をいじれと書いてあるので。
Apacheのバージョンは2.2系を想定しています。

以下【prefork】のデフォルトです。
StartServers 8
MinSpareServers 8
MaxSpareServers 8
ServerLimit 100
MaxClients 100
MaxRequestsPerChild 4000
MaxMemFree 1024

上から順に公式ページを調べてみる。
1.StartServers
起動時に生成される子サーバプロセスの数と書いてある。
デフォルトは8で、普通は2とか4なので十分らしい。

2.MinSpareServers
アイドルな子サーバプロセスの最小個数とあるが、どこのアイドル?と一瞬考えてしまった。
アイドリングのアイドルらしい。
リクエストを扱っていないプロセス数の事らしい。
こいつを大きくするのは、めっちゃ混んでいるサーバ以外はやめろと記載あり。
AMAZONとか楽天とかなんだろうな、該当するようなサーバーは。

しかし、デフォルトは最小で8って多くないか?
もっと少なくてもいいと思う。(別にチューニングしなくても良い項目)

3.MaxSpareServers
アイドルな子サーバプロセスの希望最大個数らしい。
2と同様でこれもチューニングの必要を感じない。
と言うか、2より必要性を感じないので放置で。

4.ServerLimit
設定可能なサーバプロセス数の上限と書いてある。
Apacheプロセス稼働中におけるMaxClientsに設定可能な上限値を設定することになります。
だから最近のhttpd_configに記載が無いのか!
安定動作させるのは、MaxClientsデフォルト値(256)とイコールだから・・・。
「必要以上に大きな値に 設定された場合は、余計な未使用共有メモリが割り当てられます。」らしい・・・
逆に言えば、常にMaxClientsと同じ値を設定しておけばいいのですね。

5.MaxClients
リクエストに応答するために作成される 子プロセスの最大個数と書いてある。
リクエストが来たら作成されるプロセスの数量ならば、多いほどいいのでは?
でも、CPUのパワーやメモリの容量によって一度に処理できるプロセスは異なるからただ増やしても無駄らしい。
よって、通常よりもマシマシで設定する。

6.MaxRequestsPerChild
個々の子サーバが稼働中に扱うリクエスト数の上限と書いてある。
0は無制限なので、0以外を設定する。(0を設定するメリットが見えない。)
それによって、以下の効果が見込める。
メモリーリークが起こった場合に プロセスが消費するメモリの総量を制限できる
プロセスに有限のライフタイムを設定することで、 サーバ負荷が下がった時にプロセス数を少なくすることができる

7.MaxMemFree
デフォルトは記載されていないが、デフォルトは0らしい(無制限)
なのでチューニング不要
Apacheの使用するメモリを制限しても意味が無いので。

ここまで調べて思ったが、1,2,5,6以外はデフォルトで問題なし。
さて、これらをチューニングしていくわけだが何をどう調べて設定すればいいのか?
これから調べていきます。

前提としてサーバーは自社もしくは、自分が構築したもの(ROOT権限あり)とします。
長くなって来たので続きは2へ

タグ :

コメント(0)

コメントを受け付けておりません。