Change the ASP.NET Session State Provider?

Change the ASP.NET Session State Provider?

  
Is it OK to change the ASP.NET Session State Provider? SQL Server has proven to be a poor place for this in a high volume environment, we're seeing too many waits around locking, too many issues bue to row locking, etc.

To phrase it another way... at a technical level, is this *possible* at all, or does the system absolutely *require* the SQL Server sessions to be used?

J.Ja
Interesting Question. Are you planning to use "Out of process Mode" ? I dont think there should be any problem as it is handled by .net behind the scene. Maybe someone from outsystems can confirm ?
We're looking for something without the locking/blocking issues that come with SQL Server... if my memory is right, nearly 100% of our downtime this year has come from issues in the SQL Server session DB...

J.Ja
No clue, 

but I find it rather strange you have those issues at all (after all, .net <-> session <-> sql-server should be somewhat defacto for it)

*gonna watch this thread*

Bottom line is that there is way too much transactional volume for SQL Server to do a good job holding session state. We have 200,000+ *active* users of our application and it occassionally gets backed up, locks go out of control, and things shut down. There are too many blocking queries in session state. :(

J.Ja
@James first question, what are you storing in session? When does it lock up? Can you store it in a cookie to avoid session locking? in regards to storing the session in the database, this is a robust solution, without storing the session in database how would you do load balancing in a server farm? Or reboot a server without losing users session?
@Robert, "Out-of-process Mode" for session would work with the server farm and can also survive application restarts including application pool cycling plus it can be installed on a separate server if one want seperation from main process. It is also faster than sql server. But needless to say if the server goes down then your users lose session data. 

@ Justin, Do you have 200,000+ concurrent users or overall 200,000 users. Normally 200,000 users means around 20,000 concurrent users and sql server should be able to handle it. 

Robert -

It doesn't matter *what* we are storing in session. The typical session size is something like 20k bytes at peak usage, that isn't too much data.

The much bigger issues are:

1. The locking that occurs during the every-minute session maintenance tasks.
2. The latency between the DB and the app servers.

So what happens is that it is a big jam up of locks from time to time.

J.Ja
Kota -

We easily hit 30,000 - 40,000 active, concurrent users at peak hours. I'll often see that many sessions in the DB.

J.Ja
@kota it wasn't stated what he wanted to use "Out-of-process Mode", but if he did want to use "Out-of-process Mode" to solve his problem, how would he do that with the outsystems platform?
I don't want to use "out of process mode", I want to replace the SQL Server central sessions tate provider with one of the various replacements that act the same way, but are much faster and built for the purpose.

J.Ja
Kota -

That's not really what I'm talking about. My issue has to do with row locking in the DB and other DB activity interfering with the ASP.NET Session State maintenance.

By the by, the locking described in that post is what keeps the system from processing multiple requests from the same user at the same time, which is VERY important in an application that does a lot of AJAX stuff.

J.Ja