Laden...

Probleme mit Webapi SignalR Redis und Loadbalancer

Erstellt von Haggy vor 8 Jahren Letzter Beitrag vor 8 Jahren 1.482 Views
Haggy Themenstarter:in
1.134 Beiträge seit 2004
vor 8 Jahren
Probleme mit Webapi SignalR Redis und Loadbalancer

Wir haben eine ASP MVC und eine Webapi am laufen. Diese sind auf IIS unter windows gehostet.

Davor läuft ein Loadbalancer.
Alle Software ist auf der momentan aktuellesten version (Redis for windows 2.8 und auch mit 3.0.501 getestet)
Die Daten werden an den User via SignalR hub ausgeliefert.

Nun fallen schon einige Daten an ~1mio keys, ~3-XGB
Ich schätze mal ca 2-3Mio User sind im monat auf der Seite

Mit der config habe ich "gespielt" aber wenig veränderung gesprüt gespürt

Anfänglich war ich bei


maxheap 3000mb
maxmemory 2000mb

Ich habe auch bis ca 9 GB erhöht verhalten war immer gleich.

Nach einer Weile tauchen dieser Fehler von SignalR auf

Fehlermeldung:
StackExchange.Redis.RedisConnectionException: SocketFailure on EVAL
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Microsoft.AspNet.SignalR.Owin.OwinWebSocketHandler.<>c__DisplayClass1.<<RunWebSocketHandler>b__0>d__3.MoveNext()
--- End of stack trace from previous location where exception was thrown ---

Manchmal nur ein paar sekunden, manchmal hängt es auch komplett. Redis ist aber zugreifbar (es gehen nur keine adds mehr)

Ab und zu gibt es fehler meldungen im Redis log meistens nicht.

Unter 3.0 waren die kurzzeitigen fehler weg aber nach ca 3 stunden (mitten ind er Nacht) hin redis komplett und lies die db nicht mehr laden.

Nun habe ich primär 2 Fragen:

  • Ist davon auszugehen dass Redis-Linux stabiler ist?
  • Wenn ich sticky sessions aktiviere müsste SignalR redis niht meh als Backplane brauchen, sehe ich das richtig? Wenn ja geht das dann automatisch ? Hat hier jemand weitere infos ? Kennt jemand diese Probleme ?

Vielen Vielen dank im voraus

Mein Stackoverflow Profil
Skype Name : Boas.Enkler (bitte einen hinweis in der Kontaktanfrage damit ich euch vom Spam unterscheiden kann)

16.842 Beiträge seit 2008
vor 8 Jahren

Dein Text ist leider als außenstehender verdammt schwer nachzuvollziehen.
Der Satz

Unter 3.0 waren die kurzzeitigen fehler weg aber nach ca 3 stunden (..) hin redis komplett und lies die db nicht mehr laden. sagt nichts aus.
Lies Dir mal den eigenen Text durch, und stell Dir vor, wir kennen das System nicht. =)

Es ist völlig unklar, warum Du hier Redis im Einsatz hast und was Du genau mit Sticky Sessions erreichen willst.
Ich kanns mir zwar denken (WebAPI und MVC die gleiche Session geben), aber ich hab zB keine Ahnung, warum Du nicht einfach ein Token-basiertes System für die API nimmst?!
Ne WebAPI sollte schließlich stateless sein - und wenn man es streng sieht sind sticky sessions nicht stateless.

Ich selbst verwende Redis mit Azure, habe es auch schon auf einer Linux Maschine konsumiert aber nicht auf Windows; wobei ich das nicht mit Garantie sagen kann. War immer nur Redis-Ansprechender nie auf der Adminseite.
Kann mir aber irgendwie schwer vorstellen, dass es daran liegen sollte.

Wenn man nach SocketFailure on EVAL googlet dann sieht man immer wieder Treffer, dass es eher an Redis Allgemein statt an dem System drunter liegt.