現在、2つのWordpressサイトといくつかのJavaベースのコラボレーションソフトウェアをホストしているWebサーバーがあります。サーバーには2Gのメモリがあり、現在約1.8Gの使用可能なメモリを使用しています。トラフィックがほとんどないパイロットプロジェクトなので、メモリがさらに必要になることは明らかです。
解放するとしたら、取得するトラフィックに基づいてメモリの必要量をどのように予測できるのかと思っていました。私はグーグルでぶらぶらして、私が見つけたものは少し微妙です。サーバーのベース(トラフィックなし)負荷の関数としてメモリ要求を計算するときに使用する優れたヒューリスティックはありますか?
参考までに、free -m
の出力を以下に示します。
total used free shared buffers cached
Mem: 2048 1832 215 0 0 0
-/+ buffers/cache: 1832 215
Swap: 0 0 0
私には、これは実際に使用されているメモリのように見え、キャッシュやその他の理由による幻想ではありません。
私のコラボレーションソフトウェアの要求は実験的にテストする必要があると考えているので、そのソフトウェアを実行せずにfree -m
を次に示します。
total used free shared buffers cached
Mem: 2048 1109 938 0 0 0
-/+ buffers/cache: 1109 938
Swap: 0 0 0
これを理解するための私の計画Bは、サーバーに大量のスワップ領域を追加し、それにトラフィックを与えて、スワップが使用される量に応じて調整することです。誰かが事前にどのくらいのメモリを計画する必要があるかを推定する良い経験則があるのか、それとも私が考えているのは真実なのか疑問に思っていました。
事前に感謝します(私は本当にこれに非常に新しいです)。
答えは基本的には次のとおりです。あなたの特定のケースでは、あなたがインストールしたサイトの品質と効率が問題になるかもしれません。
たとえば、今週私は比較的中程度のトラフィックでありながら4GBのRAMを消費するサーバーに取り組んでいました。コードレビューを行った後、サイト全体でWordPressと同様の既製のCMSを使用していますが、カスタマイズが行われています)で、大きなボトルネックが見つかりました。問題を記録し直すと、サーバーが約2GBのRAM=平均的な日を使用します。RAM使用量が50%減少します!
NgnixとApacheを使用するようにサーバーを分割するようなことはお勧めしません。 Apacheを使用するだけです。 2つの異なるサーバーの構成のバランスをとるという頭痛の種は、限界的な利益に値しません。 Apacheは結構です。しかし、そうは言っても、同じボックスでWordPress PHPサイトとJavaアプリとMySQLを比較することで検討する必要があります。私の経験では、次のことを行う必要があります。
KeepAlive
設定があります。しかし、箱から出して、それは100のMaxKeepAliveRequests
に設定されていると信じています。私は通常、これを約30接続に設定し、KeepAliveTimeout
を2〜3秒と小さく設定します。重要なのは、平均的なページをダウンロードするのにかかる速度に合わせてKeepAliveTimeout
を設定し、オーバーヘッド/低速のわずかな余裕を持たせることです。したがって、ページが1秒で読み込まれる場合は、2秒のKeepAliveTimeout
を実行します。memory_limit
あなたのphp.ini
必要以上に高くないことを確認してください。デフォルトは64Mですが、多くの場合、32Mに下げることができます。MySQLのチューニングに関しては、それは最初に数週間かかる場合があります。スクリプトを調整する理由は、MySQLが見る実際のトラフィックに基づいています。つまり、基本的にはサイトを世界に向けて公開し、少なくとも2日待ってからチューニングスクリプトを実行し、さらに数日待ってさらにチューニングを行います。 1週間ほど経つと、MySQLを調整して、セットアップと同じように機能させることができるはずです。