中程度のトラフィックを持つ単一のMagento eコマースサイトをホストしているサーバーのペアがあります(Googleアナリティクスから報告された1日あたり6万ページビュー、サーバー自体については約8万レポート報告されています)。データベースサーバーは、まれに時折発生する問題を除いて、スムーズかつ迅速に実行されますが、Apacheサーバーは時々故障しています。
推奨のPHPキャッシング(APC)を使用するようにmagentoを設定し、1.5ギガのtmpfsに独自のキャッシュファイルを保持しています(このtmpfsは定期的にかなりいっぱいになり、tmpfsが実行されたときにキャッシュファイルをクリアするスクリプトを実行しています) 80%以上フル)。アマゾンクラウドフロントからほとんどの画像を提供します。私は最近、nginxをapacheのリバースプロキシとして設定しました(nginxは静的ファイルも提供します)。私はできる限りApacheを構成しました-キープアライブとホスト名検索はオフで、プリフォークは次のように構成されています。
<IfModule prefork.c>
StartServers 50
MinSpareServers 50
MaxSpareServers 100
ServerLimit 512
MaxClients 256
MaxRequestsPerChild 400
</IfModule>
.htaccessファイルをオフにしていません。アクセスログはオンになっています。オフにできるモジュールがいくつかあることは知っています。これら3つの変更のどれがどんな影響を与えるかはわかりません。
Apacheサーバーは、6ギガのRAMを備えたVPSです。執筆時点でサーバーはレポートしていますがload average: 17.77, 18.27, 49.76
、約2ギガのRAMが解放されています。ひどい状態になると、負荷は120以上になり、そこに留まります。Apacheを再起動すると、サイトが復旧し、負荷が低下します。
vmstat
は(サーバーが上記の負荷を報告している間)、CPUアイドル値が0から70の間で変動していることを示していると思います。iostat
は0から0.2%のiowait値を示しています。
少し行き詰まっています。問題は、実行中のコードとユーザー数の組み合わせの結果としてCPUが過負荷になることであると私がほとんど知りません。しかし、私はそれが問題であることを確認するのに十分な経験がありません。それが問題である場合、解決策は、コードを改善するか、ロードバランサーを使用して2つのVPSでホストしているサイトを分割することです。
だから、私の質問は次のとおりだと思います:
- サーバー上の問題やボトルネックを見つけるために他に何ができますか?
- これを改善するためにサーバー構成に加えることができる明らかな変更はありますか?
- 負荷が特定のレベルを超えたときにapacheを再起動するように自動システムを設定することは良い考えですか?
- 上記から、サイトがサーバーを超えている可能性はどのくらいありますか?
編集:
私は変なものを見つけました-/ var / spool / mail / rootは大きいです... 38ギグ。それは聞こえます...不健康です。それが問題でしょうか?