パフォーマンスを向上させるには、どの PHP オペコード キャッシャーを使用する必要がありますか?[閉まっている]
-
09-06-2019 - |
質問
高負荷時のパフォーマンスを向上させたいと考えており、オペコードのキャッシュを実装したいと考えています。次のうちどれを使用すればよいでしょうか?
また、私の目に留まらなかった他の代替案も歓迎します。
現在、Apache 2 および PHP 5.2 を搭載したストック Debian Etch で実行しています。
【アップデート1】
HowtoForge のインストールリンクが追加されました
【アップデート2】
与えられた回答とフィードバックに基づいて、アプリケーションで次の Apache JMeter テスト計画を使用して 3 つの実装すべてをテストしました。
- ログイン
- ホームページにアクセスする
50 の同時接続の場合、結果は次のようになります。
オペコードキャッシュなし
APC
eアクセラレータ
Xキャッシュ
パフォーマンスグラフ (小さいほど優れています)
上記の結果から、APC や XCache と比較して、eAccelerator のパフォーマンスがわずかに優れていることがわかります。ただし、上記のデータから最も重要なことは、あらゆる種類のオペコード キャッシュによってパフォーマンスが大幅に向上するということです。
私が APC を使用することにしたのは、次の 2 つの理由からです。
- パッケージは公式 Debian リポジトリで入手できます
- より機能的なコントロールパネル
私の経験を要約すると、次のようになります。
取り付けの容易さ:APC > eAccelerator > XCache
パフォーマンス:eアクセラレータ > APC、XCache
コントロールパネル:APC > XCache > eAccelerator
解決
答えは、実行している Web アプリケーションの種類によって異なると思います。私は 2 年前にこの決定を自分で下さなければなりませんでしたが、Zend Optimizer と eAccelerator のどちらを選択するか決められませんでした。
決定を下すために、ab (Apache bench) を使用してサーバーをテストし、3 つの組み合わせ (zend、eaccelerator、両方を実行) をテストし、eAccelerator 単独で最高のパフォーマンスが得られることを証明しました。
時間に余裕があれば、同様のテストを自分で行い、その結果に基づいて決定することをお勧めします。
他のヒント
Windows へのインストールが簡単で、WAMP で開発しているため、APC を使用しています。
APC を PHP6 に統合することについては、ここで説明しました。http://www.php.net/~derick/meeting-notes.html#add-an-opcode-cache-to-the-distribution-apc
Debian Etch に APC をインストールする手順はここにあります。http://www.howtoforge.com/apc-php5-apache2-debian-etch
いくつか実行しました eAccelerator、APC、XCache によるベンチマーク, 、および Zend Optimizer (ただし、Zend はキャッシュではなくオプティマイザーです)。
ベンチマーク結果 http://blogs.interdose.com/dominik/wp-content/uploads/2008/04/opcode_wordpress.png
結果:eAccelerator が (すべてのテストで) 最速で、次に XCache と APC が続きます。(図中のものはWordPressホームページを10,000回呼び出す秒数です)。
Zend Optimizer によりすべてが遅くなりました (!)。
はっきりとは言えませんが、私が今働いているところでは、APCとeAcceleratorを検討しています。ただし、これはあなたに影響を与える可能性があります - APC は PHP の将来のリリースに統合される予定です (リンクを提供してくれた Ed Haber に感謝します)。
私は eAccelerator で大きな成功を収めてきました (無負荷時の速度向上が顕著です) が、XCache もかなり期待できそうです。ただし、アプリケーションのスケールがそれぞれで異なる可能性があるため、それぞれでいくつかのトライアルを実行することもできます。
XCache を 1 年以上使用していますが、まったく問題ありません。
eAccelerator に切り替えようとしましたが、大量のセグメンテーション違反が発生しました (エラーが許容されにくい)。eAccelerator の主な利点は、eAccelerator が単なるオペコード キャッシュではなく、オプティマイザーでもあることです。
それぞれのアプリケーションを完全にテストして問題がないことを確認してから、apachebench を使用して負荷をかけた状態でテストする必要があります。
これらのアドオンは歴史的に、追跡すべき奇妙なバグを数多く導入してきました。これらのバグは、キャッシュの状態に依存するため、簡単に診断できない一貫性のない動作を引き起こす可能性があります。
そこで私は次のように言います。
- 上記のいずれも使用しないでください。代わりに、より信頼性の高い缶を購入してください (すなわち、エラーのない) パフォーマンスを向上させる方法。または
- アプリケーションでテストした上で、上記の中で最も堅牢なものを選択してください。
しかし、私はこう言います。
- アプリケーションをプロファイリングして、パフォーマンスの問題を引き起こしているのが本当に PHP コード解析であることを確認します。そうでない可能性は非常に高いと思います。その場合、それらのいずれかをインストールすることは時間を無駄にすることになります(実際には、時間を生産的に使用することになります)。