1

Rack::Cache をスタックの一番上 (最後) のミドルウェアとしてセットアップしました。私のアプリは heroku cedar でホストされているため、Rack::Cache は静的アセットも担当します。

これは heroku memcached 製品に支えられており、次のように構成されています。

config.action_dispatch.rack_cache = {
  :metastore    => Dalli::Client.new,
  :entitystore  => 'file:tmp/cache/rack/body',
  :allow_reload => false
}
config.static_cache_control = "public, max-age=2592000"

薄く動いています。

ab を使用して、イメージ ファイルのパフォーマンスをテストしています。

ab -n100 -c10 https://example.com/foo.jpg

ログを見ると、すべてのリクエストがキャッシュ ヒット (「フレッシュ」) です。しかし、パフォーマンスは悪く、1 秒あたり 6 リクエスト程度しかありません。Rack::Cache が専用の http プロキシほどうまく機能しないことはわかっていますが、これよりも高いスループットを期待していたことは確かです。

更新 前にこれについて考えたことはありませんでしたが、私のベンチマークは確かに私のインターネット接続を最大限に活用しています. jpg の代わりに robots.txt を使用して同じテストを行うと、1 秒あたり 20 のリクエストが得られます (それでもダウンストリームは最大になります)。

4

1 に答える 1

2

あなたの投稿の URL が HTTPS であることに気付きました。ホスト名ベースの SSL を使用する cedar スタックで問題が発生しました。この問題では、ログにキュー時間が 0 ミリ秒でサービス時間が 5 ~ 10 ミリ秒であると示されていても、特定のリクエスト (静的アセットとそれ以外の両方) で高いレイテンシが発生します。Heroku のサポート応答は次のとおりです (Heroku が言及していないのは、ホスト名ベースの SSL を実行しているときにスタックに存在するにもかかわらず、varnish は cedar アプリからのリソースをキャッシュしないということです)。

何が原因なのか完全にはわかりませんが、Varnish が原因であると思われます。通常、Cedar スタックの場合、Varnish は存在しません。ただし、SSL Hostname アドオンを使用すると、Varnish が応答プロセスに追加されます。Rack::Cache と Varnish の両方を使用する必要はありません。

写真からワニスを取り除いて効果があるかどうかを確認することをお勧めします。これを行う方法は、SSL を新しい SSL アドオンである SSL エンドポイントに移動することです。SSL エンドポイントは技術的にはまだベータ版ですが、まもなく一般公開され、SSL ホスト名と同じ価格になります。これは Heroku の SSL の未来であり、あらゆる点で優れています。

http://devcenter.heroku.com/articles/ssl-endpoint-beta2
ユーザー: ベータパス: * ***

移動のマイナス面は、DNS を更新する必要があることですが、これが完了すると、Varnish が見えなくなり、それが問題であるかどうかをよりよく理解できるようになります.

また、現在の SSL エンドポイントである Amazon ELB が不良であり、交換する必要がある可能性も考慮しました。しかし、その場合、ランダムな 1 つの遅い要求だけでなく、多くの要求が遅くなったり失敗したりします。現在の ELB を交換すると、DNS の変更も必要になります。新しい SSL エンドポイント アドオンに移行すると、将来、このような状況が容易になります。ELB の交換が必要な場合、DNS の変更は必要ありません。

今のところ、SSL エンドポイントに移行するのが最善だと思います。

確かに、私が見たレイテンシーは時々 30 ~ 60 秒の範囲になりました。一部の (HTTPS) cedar アプリで静的アセットに対して同じ apache ベンチ コマンドを実行すると、あまりうまくいきません (10-15 リクエスト/秒)。同時実行数を 50 または 100 に増やすと、RPS は 30 まで上がります。ただし、Varnish が前面にある竹の HTTPS アプリでは、静的アセットで 50 リクエスト/秒を超えることができます。私のコンピューターがより高い同時実行性を処理できれば、さらに高くなると思います。また、私のインターネット接続はセルラー ネットワーク上にあるため、遅延が大きくなっています。

于 2012-04-02T01:30:26.107 に答える