We are seeing our software behaving unusually at one of customers where it is being run inside a Windows 2008 virtual machine. The host is VMWare ESX Server.
The biggest issue I have seen is our processes drop socket connections or socket connections timing out. Some of our processes communicate with each other over TCP sockets. In some cases we make socket connection to remote systems (e.g., WMI, JDBC).
I am lead to believe that the VM is starved of resources. We do not have access to ESX admin/performance dashboards. I have also learnt that any numbers that perfmon or task manager inside the host VM provide are not true indication of the host OS health.
I could write a program that does bunch of floating point math and prints out the time taken. Then compare that time to the same obtained on different VMs or real Windows boxes.
This approach is sufficient for us to be able to determine whether the root cause is indeed VM performance. However it would be much easier to convince the customer if there was a standard way or tool for doing this.
Is there one?