7

サイトのパフォーマンスが遅いため、キャッシング ソリューションとして info Varnish を探し始め、Google Analytics についていくつか質問があります。

サイトに 5,000 人のアクティブ ユーザーがいる場合 (GA のライブ トラフィック レポートによると)、バックエンド サーバーのサーバー負荷が 30 ~ 40 + に急増し、乗客のキューが積み上がり始め、サイトはほとんど使用できなくなります。パフォーマンスを向上させるために必要なクエリとデータベースの作業が遅いことは認識していますが、現時点では、クエリとデータベーススキーマ、インデックスなどを最適化するためのリソースがないため、ワニスの追加を検討しています。

スタックをよりよく表示するために図を作成しました。現在のスタックは次のようになります: (サイトは現在、CDN に images/css/js をキャッシュしています - Akamai)

ここに画像の説明を入力

バックエンド サーバーの前に 2 つのワニス インスタンスを追加して記事をキャッシュすると、スタックは次のようになります。

ここに画像の説明を入力

このサイトはニュース サイトであり、Cookie とキャッシュを適切に処理する方法についてアドバイスを求めています。フェーズ 1 では、認証されたユーザーを完全に除外し、動的コンテンツを提供したいと思います。同時認証されたユーザーは多くないからです。

混乱は、Google アナリティクスの Cookie にあります。私の理解では、Google は JavaScript を使用してクライアントに Cookie を設定し、クライアントは Google と直接通信するため、バックエンドはクライアントが送信する GA Cookie を必要とせず、vcl_recv サブルーチン中に設定を解除しても安全です。

sub vcl_recv {

// Remove has_js and Google Analytics __* cookies.
set req.http.Cookie = regsuball(req.http.Cookie, "(^|;\s*)(_[_a-z]+|has_js)=[^;]*", "");
// Remove a ";" prefix, if present.
set req.http.Cookie = regsub(req.http.Cookie, "^;\s*", "");
}

質問

  • これは安全なアプローチですか?
  • 再訪問者を含め、Google は引き続き適切に追跡しますか?
  • フェーズ 1 のポリシーで他に注意する必要があることはありますか?

varnish はデフォルトで Cookie が設定されているものをキャッシュしないため、GA Cookie を削除するポリシーを追加するだけで、上記のスタックを実装しても安全ですか? VCL ポリシーを微調整しないとヒット率が高くならないことは理解していますが、テスト中に、バックエンド サーバーの前にデフォルトのワニスを使用してもヒット率が 30% だったようで、それらを分析したところ、そのほとんどは js/css と画像ファイルであるため、これらの静的ファイルの一部は Akamai や Apache によって提供されていないことは明らかです。代わりに、静的ファイルを提供するために Passenger/Rails に渡されます。これは間違いなく修正する必要があります。

  • Varnish はデフォルトだけでパフォーマンスを向上させますか?

私はワニスを初めて使用するので、ワニスまたは私が提案したスタックに関する追加の詳細/アドバイスをいただければ幸いです。

フェーズ 2 +

コンテンツが更新されるので、ユーザー コメント、ページ ビューなどの変更が適用されたときにバックエンド サーバーによってトリガーされる、両方のワニス サーバーでパージを実行する予定です。

更新されないアーカイブ済みの記事がたくさんあります。それらを永久にキャッシュしても安全ですか?

ワニスの保存に RAM を使用する予定なので、追加の (3 番目の) ワニスを用意し、明示的にアーカイブされたページのストレージにディスクを使用する必要があります。おそらく、varnish サーバーの前に nginx スタックを追加して、トラフィックをアーカイブされたコンテンツの特定の varnish インスタンスに転送しますか? Load Balancer - > Nginx リバース プロキシのペア > Varnish のペア - > (8 台のバックエンド サーバーへの LB のニス)

アーキテクチャに関するアドバイスもいただければ幸いです。より良いアドバイスを提供するために詳細が必要な場合は、お知らせください。喜んで詳細をお知らせします。

4

1 に答える 1