Let me tell you my experience.
I have a website at http://www.utopiapimp.com that gets hit well over 1 Million times a day. Thats 11 hits every Second. Utopiapimp works on being a Live Stock Ticker for a online game called Utopia. My users need live feeds 24/7 of whats happening in the game and thats what my application does for it. Live feeds 24/7 for all users. Its extremely dynamic as well. Always changing, always updating.
My server that hosts my website is a VPS located with the company Ultima Hosts. I have a middle tiered plan that costs a bit to host. The advertising on Pimp pays for the hosting fees, but it doesn’t cover any more than that. I have 4 GBs of Ram and 1 CPU. I store so much in the caching system, that I take and use up at times almost all 4 GBs of Ram. The problem mainly is the CPU. At times the CPU hits 80% used and other times it coasts around 15% used. So I was hoping to bring in some multi threading into Pimp to make the inserts into the DB much faster and a much faster response time for the users.
I started with just one thread, the new type of tasking in C# introduced in .Net 4.0.
Task.Factory.StartNew(() => DoSomeWork());
The Problem with this I think, is I only have one CPU. When I implemented this method, I sadly and immediately saw a block. The application started to hang. I spent the next few weeks to try and stop the hang. Yes, sadly, I introduced a bug so bad, I immediately started getting user connections loss. I introduced a ton of code when I introduced this bug, so I was completely lost on the topic. I thought well, it had to be something else. Not until I wrapped the task around my error handling code to insert errors into the DB, did I realize what was going on. So I tried threading instead.
System.Threading.Thread newThread = new System.Threading.Thread(anObject.AMethod);
newThread.Start();
This didn’t work either. I then realized, well maybe threads just don’t work on .Net Web apps. I then thought, well maybe its just my 1 CPU. Well, I haven’t yet upgraded to the second CPU, to test this out.
But believe me, when I get the chance, I will.
Scott