Session-Zugriffe in ASP.NET sind langsam

asp.net
session
Tags: #<Tag:0x00007fb0705cbb60> #<Tag:0x00007fb0705cba20>

#1

Sowohl ASP.NET Web Forms als auch MVC sind beim Zugriff auf Sitzungsvariablen (“Session”) mit einiger Vorsicht zu genießen:

Access to the session state is per session exclusive, which means that a request to the session state applies an exclusive lock on the session object. Other requests trying to access the same session object concurrently will then have to wait until the first request has completed and released the lock. On the other hand, concurrent requests accessing different sessions can be handled concurrently.

(Zitat von hier)

D.h. bei vielen Anfragen hängt unter Umständen die Performance deutlich nach unten durch. Wir haben das selbst auch schon erlebt.

Dann ist oft im IIS-Live-Zugriffs-Log zu sehen, dass es viele Einträge mit “AcquireRequestState” gibt. Das deutet darauf hin, dass zu viele Anfragen kommen, und die Session-Zugriffe der Flaschenhals sind.

Es gibt hier verschiedene Ansätze, die Verwendung des eingebauten Sessions-Handlings zu umgehen. Z.B.:

Ich selbst nutze bisher noch fast nichts davon, ab und zu die SessionStateBehaviour-Enumeration.

In ASP.NET Core ist das Verhalten des eingebauten Session-Handlings wohl besser steuerbar.