As far as I know one can improve ASP.NET applications performance published on IIS through different methods:
- Web Garden: using more than 1 worker process for App Pool.
- Web farm: having more than one machine serving an instance of the same application
- Tweaking ASP.NET web.config file
... and maybe others I do not know ...
Option 1 and 2 require complex data structures to be serialized and also session state mode to be set to either State Server or SQL Server (InProc mode is not compatible and it does not work)
I want to focus in options 1 and 3:
Regarding to web garden (option 1), we set more than 1 worker process for an application Pool and we must set state server or sql server as session state mode.
In option 3, we tweak web.config file as explained here by setting parameters such as maxWorkerThreads.
Now a lot of questions come to my mind....
I am not be able to distiguish what's the differnce between setting more than 1 worker process for App Pool in option 1 and setting maxWorkerThreads > 1 in option 3.
- In option 1 you have more than 1 worker process available for attending incoming requests and in option 3 instead you have many threads available for attending incoming requests so what's the difference?
- Worker processes = threads?
- Do worker processes for the application Pool (option 1, case #worker processes > 1) work and behave in the same way as if we have many threads (option 3, case #maxWorkerThreads > 1)?
- Are processes in option 1 the same as threads in option 3?
- Furthermore, in option 3, how it works when you have 1 worker process for an application pool but you set maxWorkerThreads > 1 in web.config file? Is not the same scenario as in option 1?
- Also, can I use InProc session state mode with option 3?