I can't figure this one out. On SQL Server I have a process that is run dozens of times per second (data being sent to the server). The process runs great, processing requests takes between 50ms and 200ms. Then, roughly (but sporadically) once every 1.5 minutes all requests suddenly take 15000ms to 22000ms (15 to 22 seconds). At the same time CPU usage on the server drops drastically. Sometimes (about 70% of the time) average disk queue length spikes just before the cpu drops and the requests slow down.
I am watching CPU on perfmon, it usually jumps between 20% and 70%, with average CPU of about 50%. When things stop, it drops to 0%, with a couple of 20% spikes, for about 20 seconds.
At the same time I am watching SQL activity monitor. Usually there are between 1 and 4 EXECUTE transactions listed, but when this happens the EXECUTE transactions start to go up, to 20 or 30 transactions. Transactions are coming in, but not being processes.
I check for blocks and never see any:
Select A.*
From master.dbo.sysprocesses as A with (nolock)
Where A.blocked <> 0
Note that I am running in "snapshot isolation"
I have the system recording deadlock conditions to the error log, none reported.
I checked SQL agent for other processes that are running, none scheduled at the time these events happen.
I watch SQL Profiler for other events coming in, there was nothing. I also watched for File Growth events and it reports nothing.
Even when the requests are taking 20000ms, SQL Profiler reports reads under 2000 and cpu under 50. The processes themselves do not appear to be consuming resources. However the logout events are reporting high reads and cpu (I am not sure if that is at all relevant).
There is also nothing in my event log at the time of these events.
Any ideas? Any other place to look?
Running SQL Server 2005 Standard on Window 2003 32bit.