2016-04-14 8 views
1

Ich habe eine sehr kleine Lambda-Funktion, deren einziger Zweck Webhooks von Segment.io erhalten und eine Benutzer-ID und Zeitstempel zu einem Redis-Hash über HSET hinzufügen.Lambda-Funktion Timing auf einfache Verbindung zu Redis

Dieser Prozess ist vernünftiges Volumen, 100-200 Anfragen pro Minute. Aus irgendeinem Grund beobachte ich viele der HSET-Anforderungen jedoch außerhalb der 5-Sekunden-Grenze, die ich auf die Lambda-Funktion einstelle.

image

ich die freie Tier von Heroku Redis bin mit. Ich angeschlossen Redis Monitor und das ist alles, ich sehe:

Redis

So scheint es nicht wie Redis ist das Timing, aber mehr, dass Lambda ein Problem oder dass aus irgendeinem Grund Lambda kann, ist mit Ich werde die Verbindung zu Redis nicht herstellen und die Zeit abbrechen. — aber ich bin mir nicht sicher.

Was geht hier vor? Ist das ein bekanntes Problem mit Heroku Redis und sollte ich etwas anderes versuchen? Der Grund, warum ich Heroku Redis verwenden wollte, ist, dass ich Heroku Links (den Fremddatenwrapper) verwende, aber ich könnte das FDW auch mit einer externen Redis-Instanz einrichten.

Update: Ich habe versucht, dies aus dem Lambda zu einem separaten Micro Server zu verschieben (einen Heroku Service, konsequent zu sein). Ich sah die gleichen Probleme von wiederholten Timeouts, wobei Redis keine Aufzeichnungen über langsame Operationen hatte. Das Hinzufügen von New Relic zum Server zeigte nur unglaubliche Metriken - soweit New Relic betroffen ist, ist jede Anfrage innerhalb von 5 ms abgeschlossen, was bedeutet, dass die Zeitüberschreitung vor der Anwendung stattfindet. Ist es möglich, dass dies auf der Routing-Schicht passiert? Oder dass der (unglaublich, für mich) Knoten irgendwie nicht auf diese Anzahl von Anfragen pro Sekunde skaliert?

+0

Wie groß ist der Hashwert, wie viele Schlüssel? – Niloct

+0

Es variiert, aber ich lösche es alle 10 Minuten, also nicht groß. Im Moment hat es buchstäblich 2 Schlüssel und ich sehe immer noch Timeouts. – jdotjdot

+0

Das Verbindungslimit für die freie Schicht ist 20. Versuchen Sie, Ihre Instanz für einige Minuten zu promoten und den Benchmark erneut auszuführen. – Niloct

Antwort

0

Dies war nur ein dummer Fehler unsererseits — der Server wurde unter bestimmten Umständen nie eine Antwort auf den Client zurückgeben, und so es Zeitüberschreitung.

Verwandte Themen