Windows Server 2008 R2 File Server Performance
I seem to be having an issue getting the best performance out of our Windows Server 2008 R2 file server. This is running as a VM under XenServer 6.2, and is currently assigned 4 virtual cores, 8GB of RAM and its own dedicated disk array passed through as a removeable device from XenServer. This disk array consists of 4 4TB drives on a hardware RAID controller running as a RAID 5 array. It has a virtual network interface assigned to it consisting of 3 physical gigabit NICs bonded together. All things considered, it should have plenty of resources available, and from what I can judge from Windows resource monitor the hardware isn't overly-taxed - CPU isn't going much above 10%, RAM usage around 2GB, network utilisation around 500Mb/s. If I've read the documentation right, a disk queue length of anything less than number of spindles + 2 for a RAID array is okay, and our disk queue length seems to hover around the "1" mark - plenty of capacity to spare, there. I've recently made sure the XenServer tools are installed on the VM, which changed the virtual NIC's driver and made it gigabit-capable.
This file server is now handling all shared file areas as well as all users' My Documents and Desktop folders and, mostly, seems to be running okay. However, we still seem to be having performance issues in some particular cases - by the looks of it, when there are simply lots of people using the system at a time. During busy times (i.e. when a class all logs on at the same time), some users will seem to be "locked out" during the login process, as if the file server is simply too busy to process their request right at the moment and is queing requests.
The only readout that I an see on the performance monitor that seems to be constantly at the top of its limit is the "TCP Connections" readout - it seems to hover near its "100" top limit. Are we running out of available TCP connections to the file server? Is this even a limitable figure? I get that the graph auto-scales to fit the figure that it's displaying, but it rather suspiciously never seems to go above 100, even though it seems to hit 100 at times. Is something limiting the number of TCP connections? If so, is that a limit that can be set in Windows, or is that a limit set from the XenServer side of things? I've investigated settings for Windows file servers and added Microsoft's suggested registry settings, however no mention seems to be made of a TCP connection limit. Is that limit actually a result of something else being limited - number of threads or similar?
Are there some diagnostic / benchmark tools I can run on the file server to judge how well it is performing overall? Will benchmarking to get an IOPS figure of some kind be any help, or will another benchmark be better in this case?