回答ありがとうございます!あなたの提案に従って、コードに触れることなく、メモリ使用量を195M SWAPと108M RSSに減らすことができました(すぐに最適化することは間違いありませんが、これはトラブルから迅速に抜け出すための解決策となるはずでした)。
これが私がしたことのリストです:
VirtualHostエントリで使用されるワイルドカードを取り除きました。*:80および*:443の代わりに、サーバーの実際のIPを使用しました。
ApacheのプリフォークMPMを変更しました。これらは私が最終的に使用した値です:
StartServers 1
MinSpareServers 1
MaxSpareServers 5
ServerLimit 16
MaxClients 16
MaxRequestsPerChild 0
ListenBacklog 100
これらは決して魔法の数字ではありません。さまざまな値と組み合わせを試してみてから、サーバーの実際の使用状況に対してテストしました。誰もが同じ環境で同じことをする必要があります。記録のために、私のサーバーは毎月2M pvsを受け取り、動的なページとアセットの両方を通常のレートで提供します-digg効果はありません。ここでも、パフォーマンスやHAを改善するのではなく、メモリフットプリントを削減することを目的としています。
参照:
ApacheのKeepAliveを調整しました。KeepAliveTimeoutより低い値(私の場合は2)に設定することで、コンテンツを要求しないアイドルクライアントとの接続を待機するサーバープロセスが減ることが期待できます。
リファレンス:http : //httpd.apache.org/docs/2.0/mod/core.html#keepalivetimeout
MySQLの未使用モジュールを削除しました。skip-innodbMySQLのmy.cnf に追加しました。大幅なメモリ消費の削減。
個人的にはできなかったいくつかの注目すべき優れた提案もあります。
- 不要なPHPモジュールを削除します。私のサーバー上のPHPにはほとんどのMODが既にコンパイルされています。おそらく、他のVPSで最小限のPHPを試してみるでしょう。
- php-fastcgiを使用してnginxに切り替えます。それはもうすぐ試してみるもう一つの良いアドバイスですが、今はダウンタイムを冒すことはできません。