web-dev-qa-db-ja.com

MemcachedとAPCのどちらを選択すればよいですか?

私はこの記事を読みました: http://www.mysqlperformanceblog.com/2006/09/27/apc-or-memcached/ 昔から..最高のキャッシングエンジンを利用できるようにしたいので私のアプリケーションは非常に高速です。もちろん、オーバーキャッシュしたくありませんが、少なくとも最高のものを選択したいと思います。その記事では、Memcachedが遅く、apcが速いので、誰もが memcached を選択するのはなぜですか?

http://framework.zend.com/manual/en/zend.cache.backends.html#zend.cache.backends.twolevels ここには「Apcのような高速(ただし制限付き)を使用、Memcache ...、File、Sqliteなどの「遅い」...」Apcを高速、Memcacheを低速として使用するのは良い考えだと思いますか?

160
Thomaschaaf

Memcachedは分散キャッシングシステムですが、APCは非分散型であり、主にオペコードキャッシュです。

異なるWebサーバー(ロードバランシング)上に存在する必要のあるWebアプリケーションがある場合(のみ)、分散キャッシュにmemcacheを使用する必要があります。そうでない場合は、APCとそのキャッシュに固執するだけです。

常にAPCであるopcodeキャッシュを使用する必要があります(APCはphp6 iircに統合されるため、今すぐ使用を開始してください)。

両方を異なる目的に使用できます/すべきです。

263
Karsten

Memcachedは、複数のWebサーバー間で状態を保持する必要がある場合(負荷分散され、キャッシュ内の内容がすべてのサーバーで同じであることが重要である場合)。

(または各)サーバーでの読み取り(および書き込み)のためにクイックメモリにアクセスする必要がある場合は、APC。

APCは、スクリプトの実行時間をコンパイルおよび高速化することもできます。したがって、たとえば、キャッシュストレージにmemcachedを使用しながら、APCを使用して実行パフォーマンスを向上させることができます。

42
xkcd150

APCの主な利点は、オペコードキャッシュです。 PHP 5.5はコアにOpCacheを統合し、PHP 5.4のAPCはまだベータとしてフラグが付けられているため、公式の発表ではありませんが、APCの開発は近い将来に廃止されます。

したがって、Memcachedを選択することをお勧めします。

18
Hieu Vo

両方を使用して速度を上げ、もう一方を使用してすべてのサーバーを同期します。 memcacheを使用する場合は、iptablesでブロックする必要がある開いているポートに注意してください。

9
Saimon Lovell

ちょっとトーマスチャーフ、これがあなたにとって遅いツールではないことを望みますが、APCには「ユーザーキャッシュ」に関連するいくつかの問題があることに注意してください。長い話を短くするために、キャッシュエントリにタイムアウトを設定するとき、またはApacheが内部APCコード内でクラッシュする場合(たとえば、タイムアウト)、いくつかの問題が発生する可能性があります。

ここに問題に関するエントリがあります: http://nirlevy.blogspot.com/2009/06/apc-futexwait-lockdown-make-your-Apache.htmlhttp://t3.dotgnu.info/blog/php/user-cache-timebomb.html (APC開発者の1人から)

6
Nir Levy

APCはコードキャッシュであり、memcacheのように動作するため、APCのみを使用します。 2ではなく1つの構成ファイルのみ。

両方のキャッシュを監視する場所は1つだけです.....

1
Thomas Decaux

あなたが何をしているのかにもよりますが、VPSで実行している私のdrupalウェブサイトでは、APCが素晴らしいと思います! CentOS 6を実行している場合、yumアップデートとして利用できるため、インストールは非常に簡単で、デフォルトは合理的であるため設定は不要です。簡単なことはありません。

1
fred