0

特定の期間に非常にトラフィックが集中する API を運用しています。varnishstat を使用する通常の状況では、必要なバックエンド接続が 0 であることを確認できます。これは、Varnish がキャッシュからすべてのデータを正常に提供できると解釈します。

トラフィックが急増すると、バックエンド接続が急増し、DB 接続が開き、DB リソースが急増します。Varnish はトラフィックが多い場合にバイパスされるようです。

MySQL の max_connections 設定を微調整し、両方のワニス構成ファイルを調整しました。最小 200 スレッド、最大 4000 スレッドの 4 つのスレッド プールで実行しています。ワニスに大量のメモリを割り当てました (15GB のうち 8GB)。

問題は、なぜバックエンド接続がトラフィックでこれほど急増するのかということです。これは確かに Varnish が防止するはずのものです。構成に何か問題があると思いますが、高トラフィックで非常に多くのリクエストがワニスをバイパスするのを防ぐために更新できるものについてのヘルプが見つかりません。

どんな助けでも大歓迎です

4

1 に答える 1

2

ほとんどのバックエンド接続のスパイクは、ニスの構成とはほとんど関係ありませんが、サイトのキャッシュ可能性とは大きく関係しています。

  • 効率的なキャッシュを妨げる Cookie はありますか? それらを取り除くか、選択したものを除くすべてを削除するかを選択できます。ワニスのサイトには両方の例があります.
  • varnishstat を実行して、ピーク時のヒット率を確認してください。キャッシュのヒット率は良いですか?低負荷時と同じですか?低負荷で同じかそれ以上であれば、いつでも改善に取り組みやすいです。
  • を実行して、varnishtop -i txurlバックエンド サーバーに最も頻繁に送信されるリクエストを確認します。ヘッダーに問題があるためにキャッシュされていない URL がいくつかあるのではないでしょうか? 一部のページはより長くキャッシュできるのでしょうか? ページの一部を ESI でキャッシュできるのではないでしょうか?
  • ワニスがピーク時にクラッシュしていないことを確認してください (空のキャッシュのままにしておきます)。クラッシュ情報はcat syslog | grep "varnish"
于 2013-07-05T07:32:25.163 に答える