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:
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)
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.
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code