is it must to ShutDown/Dispose STP?
Hi, We recently explored STP, and started using it in one of our asp.net core application. and our implementation is like, during particular object's constructor we configure/instantiate the smart thread pool with work item groups and min, max threads etc.
There are two questions:
- We often face outofmemory exceptions, though we have 8 core, 16GB RAM with 1 TB HDD VM. any guidelines or best practices to adept ?
- when to use ShutDown and Dispose methods. Since this is a web application, we as said above, configured, in one of our singleton class. so when to dispose? or shutdown?
- I tried with destructor and it seems it didn't get called. Then I tried with application stopping event in asp.net core where I retrieve the singleton instance and called custom dispose method to shutdown and dispose stp. is this right approach?
Thanks, Matheswaran S
Hi,
I assume that your application works like a service. Hence, always running and serve requests.
I think you should instatiate the smart thread pool only once in a singleton with min and max threads. Later on create work item groups with the concurrency you need and queue work items into them. Since your application work like a service (as I assumed) you don't need to call to shutdown or dispose at all. When you stop the service you can use WaitForIdle() to wait for incompleted work items to finish.
Regards, Ami
Great, you are right it is a service. and I'm fine to use WaitForIdle instead of shutdown.
and how about Memory management.? any best practices and troubleshooting tips? because we often face outofmemory exception.
The outofmemory exception is out of my scope. I assume you get the exception becuase you get too many requests than you can handle so the backlog explodes. Try to limit the backlog to avoid requests overflow.