I have a very active website which is using a NoSql database (RavenDb). I don't have exact figures as i'm not quite sure how to extract this information (any help would be great!)

But looking in performance monitor at the '% Disk Read' counter on the disk my database is running from, it is regularly over 1000...which doesn't make sense if it's a perecentage???

My sites performance does decrease once these figures are this high, not so much that it's unusable but it should be better.

Am I looking at the right performance counters, what else can I look at to find out if my disk is under heavy load...and even better if i can find out why.

My disks are 2TB 7200 rpm disks (not ideal i know, but it's all I have available currently) 12GB Memory (uses about 80%) Dual Xeon processor

I understand that this question is a little vague, I need some help on getting the right details to you to help you answer this better, just let me know what will help.

Paul


Solution 1:

Your gut instinct is correct; I wouldn't go any further than the disks. Consumer-grade SATA disks are appallingly slow, and not suited for hosting business applications whatsoever. The weak link is going to be the actual spindle speed and the storage (RAID) controller. All else equal, serial-attached SCSI (SAS) will yield far more IOPS than SATA. Avoid RAID5 for (most) databases, use RAID10 wherever possible.

Unfortunately, as with many other IT problems, the only real solution is "be less poor."

UPDATE:

To answer your question regarding the "% Disk Read Time," please refer to the following Microsoft KnowledgeBase article. It seems that certain storage controllers report statistics in an odd way. With that said, it definitely seems like your disks are being pushed to the absolute limit.

Solution 2:

You can't use %disk read time to tell if the disk is busy this is because "busy time[is] based on the duration of the I/O request, which includes time spent in activities other than reading to or writing from the disk. It then sums up all busy time for all requests and divides it by the elapsed time of the sample interval. If multiple requests are in process at a time, the total request time is greater than the time of the sample interval; as a result, reported disk utilization can exceed actual utilization. "

see Examining and Tuning Disk Performance