title: .NET production code profiling tool
body: <p>Is there any .NET performance profiling tool out there that I can attach to a running Windows service and do basic stack call sampling? It would be great if the tool require no installation because I will need to get though a lot of red tapes though the client's IT department.</p>
  
  <p>Thank you</p>
  
  <hr>
  
  <p>Nature of the performance problem:
  This program that having performance issue runs as a windows service and it process income messages from 200+ mobile devices.  Typically this program can handles at least 10 message per second. Unfortunately after a recent upgrade, this program for some reasons no longer able to process the messages fast enough usually around 7 AM. A message come in and it could sit in the program internal queue for more than 10 min before it can be processed. We also notice the program is using higher than normal CPU. Typically it should be 5% on the eight core machine, now it is 20-25%.</p>
  
  <p>The program does a more than handling incoming messages, it also maintains the database and serve data to clients. It has five threads handles the incoming messages and any maintenance job runs on its on thread.</p>
  
  <p>The current workaround is to restart the service when the slow down happens. After a restart, the program would run normal again (CPU under 5%). Until the next morning around 7 AM, it would happen agins. All the messages in the queue were discarded after each restart.  Usually 7 AM and 5 PM is the time when we receive a lot of messages, but the issue seems only happen during 7 AM.</p>
  
  <p>Our team has tried to reproduce the program in house using simulated messages, and did code comparison to see if there any critical bottleneck.</p>