I can not understand this. On SQL Server, I have a process that runs dozens of times per second (data is sent to the server). The process works fine, request processing takes from 50 ms to 200 ms. Then, roughly (but sporadically) every 1.5 minutes, all requests suddenly take 15000ms to 22000 ms (15 to 22 seconds). At the same time, the processor load on the server drops sharply. Sometimes (about 70% of the time) the average queue length of the disk queue before the processor crashes and requests slow down.
I look at the processor at perfmon, it usually jumps between 20% and 70%, with an average processor around 50%. When everything stops, it drops to 0% with a pair of 20% spikes for about 20 seconds.
At the same time, I am watching SQL Activity Monitor. Typically, between 1 and 4 EXECUTE transactions are listed, but when this happens, EXECUTE transactions begin to grow to 20 or 30 transactions. Transactions come in but are not processes.
I check the blocks and never see:
Select A.* From master.dbo.sysprocesses as A with (nolock) Where A.blocked <> 0
Note that I run snapshot isolation
I have a system for recording deadlock conditions in an error log that was not reported.
I checked the SQL agent for the other processes that are running, not one scheduled at the time these events occur.
I look SQL Profiler for other events, there was nothing. I also watched File Growth events and reported nothing.
Even when queries take 20,000 ms, SQL Profiler reports are read in 2000 and cpu up to 50. The processes themselves do not seem to consume resources. However, logout events report high readings and a processor (I'm not sure if this is really important).
There is also nothing in my event log during these events.
Any ideas? Any other place to view?
Running SQL Server 2005 Standard on Windows 2003 32bit.