web-dev-qa-db-ja.com

Nginx&PHPキャッシング:fastcgi_cache、proxy_cache、APCまたはmemcachedまたはコンボ?

FastcgiPHP5とともにnginx7.65を実行しているウェブサーバーがあり、コンテンツ配信を高速化し、システム負荷を軽減するためのキャッシュの可能性を検討しています。サーバーはさまざまな(カスタム)アプリケーションを実行します。

キャッシュには非常に多くのオプションがありますが、適切な設定が何であるかはわかりません。 memcached、APC、Nginxのfastcgi_cache、proxy_cache ...があります。

Memcachedにはボーナスとして分散機能があることは知っていますが、現時点では必要ありません。私の経験では、memcachedは、サービスを提供しているのと同じマシンにインストールした場合、APCよりもパフォーマンスが遅くなりますが、これは少し前のことです。

私はNginxfastcgi_cacheや通常のproxy_cacheモジュールにさえ精通していません。それは比較可能ですか、それとも完全に異なるものですか?

Nginxwの適切で適切なキャッシュ方法は何でしょうか。 FastCGI PHP5?

5
Matt

http://php-fpm.org/ は、FastCGI自体ではなく、最近のいくつかのインストールで使用したものです。

Nginxはmemcachedから直接ページを提供できるため、アプリケーションはページをmemcachedに直接書き込むことができます。それ以外の場合は、コードがクエリ/オブジェクトにmemcachedを使用していることを確認する必要があります。コードベースによっては、オペコードキャッシュが役立ちます。繰り返し実行されるスクリプトの小さなセットがある場合、APCまたはXCache(または場合によってはアクセラレータ)が素晴らしいブーストを提供できます。

キャッシュ方法はコードによって決まります。ページをキャッシュできますか?フラグメント? SQLの結果?値?それらのエンティティの存続期間、必要なスペース、キーと結果セットの大きさはどれくらいですか? memcachedはAPCよりも遅いのですが、実際には同じタスクを実行しないため、何を比較したのかわかりません。

2
karmawhore

ボックスがキャッシュ全体を単独で処理できる場合、memcacheは速度を低下させるだけです。 APCは共有メモリです。正しく使用すると、memcachedが吹き飛ばされます。 Nginxの高速cgiキャッシュは、すべての動的phpページを悲鳴を上げます。キャッシュをわずか10秒に設定した場合でも、これにより、特定のphpページへの最大ヒット率が10秒に1回になるようになります。ロード時にページをクラッシュさせることを不可能にします。私は月に何百万人もの人々を集める単一の小さな箱でたくさんのウェブサイトを運営しています。この時点で必要なのはnginxキャッシングとAPCだけです。

Memcacheは、キャッシュを1つのボックスを超えてスケ​​ーリングする必要がある場合にのみ登場します。

2
jake paine

私たちのシステム管理者は、バックエンドから始めて、この問題に逆方向に焦点を合わせる傾向があります。最も効果的なものは本当にフロントエンドにあります。ブラウザキャッシュ(httpヘッダー)とhttpキャッシュ(cdn、ヘッダーも)の部分を正しく取得できれば、Originで驚くほどずさんなことをすることができます。

1
cagenut

最近では、PHP-FPMをHHVMに置き換えることができます。これにより、PHP-FPM + APCのパフォーマンスが組み合わされ、驚くべき速度が得られます:hhvm + nginx + fastcgi_cache

1
l33tcodes