Ich arbeite an einer Website mit relativ hohem Aufkommen (>150.000 Seitenaufrufe/Tag). Ich bekomme einige 429-Fehler, zumindest hauptsächlich beim Message Bus. Früher hatte ich Probleme aufgrund einer falschen Konfiguration von set_real_ip_from, das ist jedoch behoben. Ich habe das Template zur Drosselung der Anfragen (vielleicht vorübergehend?) entfernt.
Ich sehe weiterhin etwa 0,5 429-Fehler pro Sekunde.
Ich habe 5 Unicorn-Worker mit einer 2-Kern-/4-Thread-CPU. 16 GB RAM. Postgres läuft auf einem separaten Host. Die CPUs bleiben zu >50 % im Leerlauf.
Ich habe das Template zur Drosselung der Anfragen entfernt und die Anzahl der Unicorn-Worker auf 5 erhöht, etwa um 8:20 Uhr.
Das ist völlig normal. Der Message-Bus wird bei einem 429-Statuscode mit einer Verzögerung reagieren, da deine Unicorns stark ausgelastet sind und sich leicht in der Warteschlange befinden.
4 Kerne mit 16 GB RAM sind eine wirklich seltsame Kombination, wenn der Knoten nicht die Datenbank ausführt. 8/8 wäre beispielsweise besser.
Super! Danke. Die CPU wird immer noch stark durch die Bildverarbeitung belastet, was hoffentlich in ein oder zwei Tagen erledigt sein sollte.
Das stimmt. Aber die Bare-Metal-Hardware hat nur 2 Kerne/4 Threads. RAM lässt sich leicht erweitern, nicht aber die Kerne (ich habe noch eine andere Maschine zu Hause mit 32 GB!). Ich habe Datenbank und Web auf zwei Maschinen aufgeteilt, um mehr CPU-Leistung zu erhalten. Auf demselben Datenbankserver laufen noch ein halbes Dutzend weitere Datenbanken von wenig frequentierten Seiten (Web auf einem anderen Host). Wären Sie der Meinung, es sei besser, DB und Web einfach auf derselben Maschine laufen zu lassen? Ich würde zwar etwas CPU-Leistung verlieren, aber die Latenz verbessern, nehme ich an.
Wenn du hier über eine Lastverteilungsfunktion verfügst, könntest du vielleicht versuchen, Web-Worker auf beiden Maschinen für deine hoch frequentierte Site einzusetzen, wobei auf der Maschine mit der Datenbank weniger laufen, vielleicht 5+2?
Wenn die Lösung des Problems mit Geld eine Option ist, besorge dir einfach einen weiteren Host mit einem besseren CPU-zu-RAM-Verhältnis.
Nun, diese Maschinen, die ich kostenlos bekommen habe, werden langsam etwas in die Jahre gekommen, also versuche ich mich damit abzufinden – die Single-CPU-Leistung scheint jedoch immer noch besser zu sein als die eines DO-Droplets. Wenn das Problem kurzfristig mit Geld gelöst werden könnte, hätte ich diesen Kunden wahrscheinlich nicht, der Enterprise-Performance zu Business-Preisen wünscht.
Aber ich sehe auch, dass ich die Anzahl der Einhörner irgendwo anders in der Kette hart codiert hatte, also laufe ich immer noch nur mit 3.
Leider kommuniziert meine aktuelle Konfiguration nur mit Docker auf einem Host. Ich sollte mir etwas mehr Zeit nehmen und schauen, ob ich auch ein paar Einhörner auf der anderen Maschine unterbringen kann. Es ist wahrscheinlich auch Zeit, sich wieder HAProxy anzusehen, aber ich habe noch ein anderes Projekt, das ich unbedingt zuerst starten möchte.
Vielen Dank für deine Einschätzung.
EDIT: Und als ich schließlich auf 5 Einhörner statt 3 umgestellt habe, sehen die Leistungsgrafiken etwa gleich aus (vielleicht sogar ein winziges bisschen langsamer?), aber die 429-Fehler sind deutlich zurückgegangen. Es sieht so aus, als würde das, sobald die Bildverarbeitung abgeschlossen ist, einfach funktionieren.