web-dev-qa-db-ja.com

Nginx FastCGI_Cache Vs PHP キャッシング

Loader.ioを使用してキャッシュのパフォーマンスを試してみたところ、いくつかの不可解な結果が残りました。

私はもともとLAMPスタックを使っていた共有ホストにいました。キャッシングが有効になっていても、1分間に200人の訪問者が来た後には倒れるでしょう。

私はDigital Oceanに基本的なLEMP(Nginx 1.9.12 + PHP-FPM7.0)1GB Ubuntuドロップレットをセットアップし、自分のサイトを(サブドーム型マルチサイト)にコピーした。

ベースラインを取得するために、簡単にするためにPHPキャッシュオプションを使用して自動wp-super-cacheプラグインを設定し、テストを実行しました。それは非常にうまくいったので、私は私が自由な計画(1分に10,000)で可能な限り最大を走らせた、そしてここに結果がある。

LEMP + wp-super-cache 

これは、1回のリクエストで300ミリ秒未満になることはなく、あらゆる種類の負荷でタイムアウトが発生するという、私の共有ホストと比較して驚くほど優れています。

Wp-super-cacheでPHPキャッシングを使用すると、静的ページがPHP経由で提供されるためオーバーヘッドが生じるため、Webサーバーキャッシングを使用するよりもキャッシングパフォーマンスが悪くなります。

Fastcgi_cacheでPHPファイルをキャッシュするように設定してから、wp-super-cacheプラグインを無効にしたところ、私はすばやく回答を得ることができたことを知り、興奮しました。

私は再び負荷テストを実行しました。これが結果です。

enter image description here 

結果はほぼ同じです。最初のリクエストはもう少し時間がかかりますが、それは私が興味を持っているキャッシュされたレスポンスです。

この結果から、PHPを使用してwp-super-cacheにキャッシュを処理させるよりも、fastcgi_cacheを使用することの利点はわかりません。 PHPキャッシュを使用することは、ユーザーが生成したサブドメインとマッピングされたドメインを扱うとき、確かにずっと簡単です。

私はフリープランにいるだけなので、負荷テストをこれ以上高くすることはできませんが、1分で10kを超えることはありません。

PHPで静的ファイルを提供するのではなく、Webサーバーでキャッシュルールを使用することでパフォーマンスが大幅に向上すると述べているので、これを読んでいるすべての記事では混乱しています。そうであるように思われる。

Fastcgi_cacheはramから直接提供されます。 Wp-super-cacheはSSDから静的ファイルを読み込むためにphpを使用します。

もちろんこれは実際の問題ではありません。私の結果がどうしてそのようなもので、私が読んだすべてのガイドと矛盾しているように思われるのですが、混乱しています。

私がこれらの結果を得ている理由について誰かが何かの光を当てることができますか?

6
Guerrilla

Nginxは並行性が非常に優れているので(PHPはそれほどではありません)、毎秒180以上のリクエストを試すべきです。サーバーリソースとネットワークスループットに応じて、500または1000になる可能性があります。

Fastcgi_cacheはramから直接提供されます。 Wp-super-cacheはSSDから静的ファイルを読み込むためにphpを使用します。

場合によります。まず第一に、fastcgi_cacheがメモリから提供されるかどうかはあなたのfastcgi_cache_pathに依存します。それがtmpfsマウントに設定されているならば、はい、それはメモリにあるでしょう。通常の非tmpfsディレクトリに設定されている場合は、ディスクから提供されます。

しかし、ディスクは必ずしも実際のディスクを意味するわけではありません:)

ディスクからファイルにアクセスすると、Linuxはそれをメモリにキャッシュします。したがって、次に同じファイルにアクセスするときには、メモリからそのファイルが提供されます。これが、loader.io、Apache-bench、および同じページを「ハンマーにする」他のツールを使ったテストのほとんどに欠陥がある理由です。これらはすべてあなたのスタックがメモリ内で利用可能な同じファイルにアクセスしてサービスするようにします。これが、WP-Super-Cache PHPオプションがNginxよりもはるかに多くのディスクIOを引き起こさない可能性があり、したがって同時実行性が低くても同じくらい高速に見える理由です。

5
kovshenin