MMCacheやZendAcceleratorなどのPHPアクセラレータを使用した経験のある人はいますか?これらのいずれかを使用することで、PHPがより高速なWebテクノロジーに匹敵するかどうかを知りたいです。また、これらを使用することのトレードオフはありますか?
10 に答える
Zend Optimizer と MMCache (または同様のアプリケーション) はまったく別のものであることに注意してください。Zend Optimizer がプログラムのオペコードを最適化しようとする間、MMCache はスクリプトをメモリにキャッシュし、プリコンパイルされたコードを再利用します。
私は少し前にいくつかのベンチマークを行いました。結果は私のブログ (ドイツ語ですが) で見つけることができます。基本的な結果:
Zend Optimizer だけではまったく役に立ちませんでした。実際、私のスクリプトは、オプティマイザーを使用しない場合よりも遅くなりました。
キャッシュに関しては: * 最速: eAccelerator * XCache * APC
そして: オペコードキャッシュをインストールしたい!
例: 代替テキスト http://blogs.interdose.com/dominik/wp-content/uploads/2008/04/opcode_wordpress.png
これは、wordpress のホームページを 10.000 回呼び出すのにかかった時間です。
編集:ところで、eAcceleratorにはオプティマイザー自体が含まれています。
MMCacheは非推奨になりました。http://pecl.php.net/package/APCまたはhttp://xcache.lighttpd.net/のいずれかをお勧めします。どちらも、可変ストレージ(Memcacheなど)を提供します。
どちらも興味深いものであり、ソースコードをバイナリ表現にコンパイルしてPHPエンジンで実行するため、速度が向上します。
PHPで実行されている巨大なWebサイト(Facebookなど)は、MMCacheのようなある種のオペコードキャッシュシステムを実行しています。
問題は、システムによってはセットアップが非常に簡単ではないことです。
実際に実行されるPHPコードの量と、その実行にかかる時間によっては、非常に大きなメリットがあります。それは確かに害になることはありませんが、あなたが見る利益はあなたの時間が現在どこで費やされているかに大きく依存します。
ところで、mmcacheは現在別のプロジェクトに組み込まれています。名前を忘れましたが、Googleが教えてくれます。
私は本番サーバーで APC を使用していますが、すぐに使用できます。これをコンパイルして PHP に追加すれば、あとはあまり調整する必要はありません。統計を確認するためだけに時々チェックしますが、MVC をよく使用するため、すべてのメイン ファイル (ルーター、コントローラーなど) が日常的に変更されることはめったになく、コードがコンパイルされたままになり、かなり効率的に実行されます。 .
現在、apcを無料で使用しており、ライブサーバーでの単純なプラグアンドプレイでした。特にプロジェクトのサイズが大きくなるにつれて、サイトのパフォーマンスが大幅に向上しました。また、apc.statを無効にしているため、コードが更新されているかどうかはチェックされないため、ライブサイトでコードを更新する必要がある場合は、apacheを再起動します。
私は APC を使用していますが、高いキャッシュ ヒット率を維持すれば、アプリ サーバーの CPU と I/O の負荷を大幅に削減できることを証明できます。コンパイルする必要がなくなるだけでなく、ディスクから php ファイルを読み取る必要がまったくなくなります。(つまり、バイトコードはメイン メモリから直接提供されるため、非常に高速です) 1 ページのレンダリング速度が低下し、サーバーが処理できる 1 秒あたりの要求が増加します。
RedHat または CentOS を使用している場合、APC のインストールは非常に簡単です。
yum install php-devel httpd-devel php-pear
pecl install apc
echo "extension=apc.so" > /etc/php.d/apc.ini
# if you're using SELinux:
chcon "system_u:object_r:textrel_shlib_t" /usr/lib/php/modules/apc.so
/etc/init.d/httpd restart
あなたは欠点について尋ねました。唯一の欠点は、メモリが必要なことです。APC のデフォルトは 30MB ですが、これは調整可能であり、速度と応答速度の向上により、わずかなメモリのコストが元に戻ります。
BlaM のテストには、WordPress によって行われたすべての DB 呼び出しが含まれていました。DB 呼び出しを少なくすると、オペコード キャッシュのパフォーマンスがさらに劇的に向上することがわかります。
ファレンジャーをチェックアウトしましたか?PHPを.NETコードにコンパイルします。これは、パフォーマンスを劇的に向上させることができることを示すいくつかのベンチマークです。
少し前にZendAcceleratorを使用しました(2004年っぽい)。それは確かにそれが動作できるコードでいくつかの重要なパフォーマンスの向上をもたらしましたが、残念ながら私が使用していたシステムはコードを動的にロードして評価するように設計されていました。 dはまだできないと思います)。
欠点としては、確かにいくつかのキャッシュの問題が発生しました(コードは変更されますが、コンパイルされたバージョンは何らかの理由で変更と同期します)。これらの問題は、今では解決されていると思います。
とにかく、私には確固たる比較数はなく、比較のために異なる環境で同じシステムを作成したことは確かではありませんが、大多数のシステムでは、PHPがパフォーマンスを低下させることはありません。