私は、大きくて遅いが拡張が容易なPHPアプリケーションのホスティングを担当しています。アプリケーションは完全に静的であり、書き込み可能なディスクストレージが必要です。アプリケーションのプロファイルを作成しましたが、主なボトルネックは、アプリケーションが実行する作業ではなく、アプリケーションのロードに起因しているようです。このアプリケーションは、かなりの量のメモリを使用しますが、CPUを集中的に使用しません(Magentoを考えてください)。
現在、ハードドライブに同じPHPファイルがあり、その前にロードバランサーがある一連のサーバーを使用して配布しています。簡単ですが高価です。
私は RAMディスク とそれらが提供するIOの利点について読んでいて、それらがPHPアプリケーションに適しているかどうか疑問に思っていました。
PHPアプリケーションはリクエストごとにディスクから読み込まれ、多くの場合、(Javaアプリケーションのようにメモリに保持されるのとは対照的に)多くの異なるファイルが含まれるため、ディスクのパフォーマンスがわかります。深刻なボトルネックになる可能性があります。
PHPファイルをRAMディスクに配置し、マウントポイントをApacheのドキュメントルートとして使用すると、パフォーマンスが向上しますか?起動スクリプトは、RAMドライブを作成してから、ファイル(プレーンテキストで小さい)を永続的な場所から一時的なRAMドライブにコピーできます。
これは理にかなっていますか、それともLinuxカーネルを信頼して適切なファイルをメモリにキャッシュする必要がありますか?
いいえ、RAMディスクは実際にはPHP(PHPアクセラレータなどのより良いソリューションと組み合わせると)を傷つけます。
PHPパフォーマンスを向上させる最善の方法は、PHPアクセラレータを使用することです。これらはWebエンジン(Apache httpdなど)にプラグインしてキャッシュするモジュールです。 PHPスクリプトのコンパイル済みバイトコード。このキャッシュはramに保存されます。その結果、PHPスクリプトへの今後の呼び出しはディスクにまったく移動しません。 、プリコンパイルされたバイトコードはキャッシュから取得されます。つまり、ramdiskを使用しても何も得られず、代わりに他の場所で使用できるramを消費することになります。
ディストリビューションと使用しているWebサーバーエンジンによっては、すでにPHPアクセラレーターが実行されている可能性があります。
。
これは、このテーマに関する2つの優れたウィキペディアの記事です。
PHPアクセラレータ
PHPアクセラレータ のリスト
十分なRAMを搭載したマシンがあれば、OSディスクキャッシュは適切なコンテンツをキャッシュするのにも同じように機能すると思いがちです(ファイルをキャッシュしないため、良くない場合は使用されていません使用されていますが、実際にディスクに過度にヒットしていることを確認した後、テストサーバーでベンチマークする必要があります(sarを使用)。
PHPの最大の問題は、すべてのリクエストに対して、通訳者がしなければならないことです。
[〜#〜] apc [〜#〜] を使用すると、すべてのステップをスキップして、すぐに実行にジャンプできます。パフォーマンスの問題がある場合、特に言及したプロファイリングの結果を確認した後は、APCをインストールして構成してください。あなたはあなたが得るどんなパフォーマンスの向上にも驚かれることでしょう。
Howtopedia 組織向けに多数のWikiを最適化するという問題に直面しました。プレスリリースの後、彼らが得る新聞報道は体系的にシステム負荷を100%にしました。わずか25MBのキャッシュでAPCを構成すると、システム負荷が5%未満になりました。 1%未満へのいくつかのさらなる基本的な調整。
同時に、手順1〜3のほとんどは遅延を導入するため、ユーザーが経験する応答時間は劇的に改善されました。
あなたが説明するシナリオのためのいくつかのさらなるヒント:
いいえ、RAMがすでにボトルネックになっている場合はそうではありません。