レンタルサーバー(特にVPS)を借りている場合、限られたリソースをフル活用しなければいけませんね。
自宅サーバーとは違って、メモリが足りないから、すぐに増設・・・なんてできませんから、なんとかメモリ量など限られたリソースを節約して使っていきたいものです。
そこで、今回は、一番メモリを消費している php + apache について、簡単なやり方を解説してみます。
| レンタルサーバー・自宅サーバー設定・構築のヒント |
レンタルサーバー(特にVPS)を借りている場合、限られたリソースをフル活用しなければいけませんね。
自宅サーバーとは違って、メモリが足りないから、すぐに増設・・・なんてできませんから、なんとかメモリ量など限られたリソースを節約して使っていきたいものです。
そこで、今回は、一番メモリを消費している php + apache について、簡単なやり方を解説してみます。
2010年12月9日 初版
まずは、apacheのマルチプロセッシングモジュール (MPM)を理解しておく必要があります。
マルチプロセッシングモジュール (MPM)という名前のとおり、
apacheが、並列処理するためのモジュール(分離された機能)です。
apacheのユーザは、以下のマルチプロセッシングモジュール (MPM)からいずれか1つ選択することになります。
(※apacheのドキュメントからの抜粋)
CentOSの場合で説明すると、
もし、apacheをインストールしたままの状態なら、設定は、preforkを使うようになっていますし、preforkの動作パラメータは、/etc/httpd/conf/httpd.conf内で、以下のように設定されていると思います。
|
これを簡単に解説すると、
A
pacheが起動したら8つ(StartServers)のプロセスがhttpdの名前で起動します。
Apacheは、全体のプロセスで空き状態のプロセスを常に監視しています。
空き状態のプロセスが、5つ(MinSpareServers)を下回ると新しいプロセスを5以上になるまで起動します。
※ただし、上限としてのプロセス数は、256個(ServerLimit)までです。
空き状態のプロセスが、20つ(MaxSpareServers)を上回ると古いプロセスを20以下になるまで停止します。
Apacheへ同時にリクエストできる数は、256個(MaxClients)までです。これを超えての要求は、待ちキューにつながれて待ち状態になります。
Apacheのプロセスの賞味期限は、4000個(MaxRequestsPerChild)のリクエストを処理するまでです。この数を超えたとき、自動的にプロセスは消滅します。
消滅した後は、通常のApacheの空き状態のプロセス監視が行われていますので、そこで空き状態のプロセスが少なければ、新たに起動されることになります。
先の説明で、apacheがどのようにプロセス管理をしているか、ご理解いただけたと思います。
さあ、phpについてです。phpは、異常にメモリを消費しますし、メモリリークが多い(起こしやすい)とも言われています。
そのため、php + apache で運用する場合、プロセスのリフレッシュが非常に大事になります。
例えば、以下のような設定を行うのも1つの考え方です。
※/etc/httpd/conf/httpd.confを編集します。
|
これは、極端な例ですが、要求処理が40個でプロセスを終了させるようにしています。
一般的には、ウェブの1ページを表示するためにサーバーへの要求は、10から50程度ですから、この設定では、1ページで1プロセスみたいなものです。
これでは、少し効率的でないかもしれません。ただ、デフォルトの4000という数値は、上記からも100ページ以上を1つのプロセスで処理することになりますから、
もし、phpにメモリリークなどがあれば、それなりに、メモリが大きくなりますね。
phpの場合、メモリリークなどなくても、かなりメモリを使いますので、要注意です。
実際の運用では、以下のようにしています。ご参考までに。
ポイントは、MaxSpareServersのサーバー数を抑えて、無理にプロセスを残さないようにしている点ですね。
|
(amazon ) |
インフラエンジニア教本2――システム管理・構築技術解説 (SoftwareDesign別冊)に寄稿しました。
「ログを読む技術」の再掲載になります。
8月号を見逃された方は、是非、ご一読くださいませ。 |
(amazon ) |
Software Design 8月号に寄稿しました。
「ログを読む技術」について寄稿しました。
興味のある方は、是非、ご一読くださいませ。 |
また、執筆 や 当サイトにおける広告 のご依頼などございましたら、お問い合わせページより ご一報ください。 |
Copyright © 2009 - 2024 レンタルサーバー・自宅サーバー設定・構築のヒント
2011年3月28日, 10:51 AM
[…] php + apache のメモリ量をおさえる サーバーがSWAP使い切って停止することも、よくある。 […]
2011年10月28日, 10:08 AM
[…] 参考にさせてもらったサイトは「php + apache のメモリ量をおさえる」のページを参考にしました […]
2014年6月20日, 7:17 AM
最近CMSへのDOS攻撃に悩まされていました。
ServerLimitとMaxClientsを調整して様子見していたのですが、
なるほど、参考にさせていただきました。