Ich habe eine Anforderung, ~ 20k Anrufe pro Sekunde zu verarbeiten. Mein System verarbeitet Listen mit ~ 1 Mio. Einträgen und führt für jeden Artikel mehrere Jobs aus. Es ist sehr "stoßartig" in der Natur, da es nicht immer eine Liste verarbeitet. Ich habe eine App Engine flex env (mit Rails) hinzugefügt, die automatische Skalierung verwendet, mit einem Testendpunkt, um 5 Sekunden zu warten und zurückzukehren. Ich schiebe zum Pubsub-Thema und ein Push-Abonnement wird an App Engine gesendet. Dies führt zu einem stabilen Zustand von 20-30 Anfragen pro Sekunde.Leistung ist * Weg * zu langsam mit Pubsub Push -> App-Engine
Ich vermutete, dass das Problem die Interaktion des Pubsub-Push-Volume-Algorithmus mit der App-Engine interagierte, aber dann führte ich einen zweiten Test durch, bei dem ich die Current-Anforderungen wie in einer Schleife mit mehreren Prozessen löste. Dies lief auch bei 20-30 rps.
Ich bin an diesem Punkt fest und frage mich, wie es weiter geht. Wie kann ich das System für höhere Leistung konfigurieren? Ich brauche eine Leistung von drei Größenordnungen von dem, was ich sehe.
Vielen Dank für Ihre Hilfe!
Sind also die Nachrichten in Pub/Sub gesichert? Können Sie die Skalierungseigenschaften von Ihrer 'app.yaml' veröffentlichen? Laut [docs] (https://cloud.google.com/pubsub/subscriber): _Cloud Pub/Sub beginnt mit dem Senden einer einzelnen Nachricht und verdoppelt sich bei jeder erfolgreichen Zustellung, bis die maximale Anzahl erreicht ist von gleichzeitigen Nachrichten ausstehend_. Sind Ihre Anforderungen fehlgeschlagen, während App Engine eine neue Instanz hochlädt (denken Sie daran, dass [langsam auf Flexible envs] (https://cloud.google.com/appengine/docs/the-appengine-environments)) ist. – tx802
Haben Sie auch einen Testendpunkt ausprobiert, der (a) nicht 5s zum Ausführen benötigt und (b) in etwas wie Python Standardumgebung (skaliert super schnell) ist? – tx802