We generally run DBCC CHECKDB nightly on all our databases. On one particular database, we've run into problems about 3 times now in the past 5+ months. The application sees timeouts at the exact time that CHECKDB runs on their database. The database is pretty small (< 2GB), and typically CHECKDB runs in under 2 minutes. When we see issues, CHECKDB runs 5-8 minutes. We also have replication running, and we can see that run considerably longer as well. I got lucky and captured 1 event in a perfmon trace, and I can see the data drive is busy, which is expected. This in itself is not unusual to see when CHECKDB runs. Here's what's striking me as odd. I can see a few minutes where transfers/sec drops, as does bytes/sec, but current queue length flat lines. After a few minutes of this, the server returns to normal.
I haven't been able to determine if there's a disk issue, or some sort of issue within SQL. I know that my SQL processes that are timing out have a wait type of IO_COMPLETION.
Does anyone have any thoughts on this?
Much appreciated, Adam