During a load test of an Azure website, we noticed that the site started to become unresponsive when 10 concurrent users we loaded.
Session management has been utilized through a Redis cache. For anyone looking to use this I would recommend here as a good starting point.
Deploying the site locally using the live web.config transforms, we were able to run the following in the command line, to show all connections that were being made from the computer.
It was noticed that there were over 100 concurrent connections being made to the cache which stopped the site from being able to connect to the azure portal.
The azure portal had displayed the following recommendations to fix the portal
This was due to the concurrent connections being maxed out a 256 connections.
What was the culprit? Creating a new connection every time the class was instantiated.
It is recommend in the by MSDN to create a static instance of the connection that is shared across the application. This can either be achieved by using a singleton pattern, using dependency injection or by using the below code.
private static Lazy _redisConnection = new Lazy(() => ConnectionMultiplexer.Connect(<>));
This then happened.