CDN-Treffer-/Cache-Rate für Discourse maximieren?

Hallo zusammen,

ich habe folgendes CDN-Setup:

  • eine Pullzone für das JavaScript
  • eine Pullzone für Logos und Homepage-Grafiken (die häufig abgerufen werden)
  • eine Pullzone für S3-Assets (auf Digital Ocean Spaces)

Ich nutze BunnyCDN. Mein Forum-Traffic verteilt sich zu etwa 85 % auf Nordamerika, 5 % auf Großbritannien/Frankreich und 10 % auf Südostasien.

Für die ersten beiden Pullzones verwende ich alle 34 Edge-Server des CDNs weltweit, da es sich um häufig abgerufene Dateien handelt. So kann ich die Latenz gering halten und gleichzeitig die Cache-Trefferquote (bzw. Hit-Rate) relativ hoch halten (92 % bzw. 99,8 %). Idealerweise würde ich die Cache-Rate für das JavaScript noch weiter erhöhen, doch das Problem besteht darin, dass Rechenzentren mit geringem Verkehr eine schlechte Cache-Rate aufweisen, da diese JS-Dateien nur selten abgerufen werden (ein paar Mal pro Monat).

Für die dritte Pullzone mit S3-Assets verwende ich 10 Edge-Server in Nordamerika und Europa, da nutzergenerierte S3-Assets manchmal nur selten abgerufen werden. Ich möchte daher nicht, dass eine zu hohe Anzahl von CDN-Knoten die Hit-/Cache-Rate und damit indirekt auch die Zugriffszeit verschlechtert. Idealerweise hätte ich gerne einen Edge-Server in Südostasien, doch das CDN erlaubt mir keine Auswahl der gewünschten Rechenzentren. Meine Hit-/Cache-Rate bei BunnyCDN liegt bei etwa 78 %, was ich als ordentlich empfinde, da beispielsweise der Abruf eines originalen Vollbildes anstelle der optimierten Version oder ein Suchmaschinen-Verweis auf eine alte, selten abgerufene Diskussion den Prozentsatz definitiv senken wird. Früher habe ich CloudFront genutzt; dort lag die Hit-/Cache-Rate bei etwa 55 %. Das könnte jedoch daran liegen, dass CloudFront viele Edge-Standorte bietet, oder daran, dass mein Forum für sie ein relativ kleines Traffic-Volumen darstellt. (Ich bin von CloudFront weg, weil es zu teuer war, da wir ein Hobby-Forum mit minimalem Umsatz sind.)

Meine Frage an die Gruppe: Habt ihr Strategien oder Methoden, um die Hit-/Cache-Rate hoch zu halten? Welche Hit-/Cache-Rate erzielt ihr?

Gibt es Vorschläge, wie ich mein Setup optimieren kann, um den Prozentsatz zu erhöhen? Gibt es kostengünstige CDNs, die eine Auswahl der Edge-Server-Standorte ermöglichen? Ist das über Edge-Regeln möglich? Falls ja, könnte ich einfach fünf Standorte auswählen, um die Cache-Rate hoch zu halten – US-Westküste, US-Ostküste, US-Süden, Großbritannien, Singapur, da sich dort mein Traffic konzentriert.

Eine Idee wäre, optimierte Assets von S3 und Original-Assets von DO Spaces auszuliefern, doch eine solche Trennung ist von der Software her standardmäßig nicht umsetzbar.

Weitere Gedanken?

I see, so your idea is to reduce the number of geographical points to increase hit rate? Because if you have “one” location aka everything on one server, that’s a perfect hit rate. :wink:

I would imagine this comes down to knowing your specific audience, and where they are – so metrics would need to be gathered first about which geographical CDN points are being hit, then consolidate to the most used?

If you want a higher hit rate then your choices are 1) fewer PoPs or 2) longer retention. The first choice is going to make the experience worse for some clients, the second is going to cost more money (if it’s even available).

This is exactly what you need to find out. What are your misses and where are they coming from?

The 5 PoPs closest to the majority of our traffic are averaging about low 80s% hit cache rate, whereas the other ones with more sporadic traffic- the lower the traffic is, the lower the hit rate, sometimes below 50%. That’s when I think consolidating the PoPs can bring the hit rate up so the CDN doesn’t always have to go back to the origin to fetch, which, speedwise is worse than just serving from the origin. Its a tradeoff between additional latency with PoPs located farther away, and reduced latency from increased cache rate at the PoP.

Longer retention is tougher to solve. That’s the lever that can bring up the hit rate for the high traffic PoPs, and I don’t necessarily have a solution for that, yet.

I am curious about others’ experience- Does high-70s% and low-80s% cache rate for user-uploaded assets feel low/ about right?

It really depends how often the Discourse instance is updated/deployed though. For us, we deploy a lot so that colors the data significantly.