Мы видим, что наше программное обеспечение ведет себя необычно на одном из клиентов, где оно запускается на виртуальной машине Windows 2008. Хост - VMWare ESX Server.
Самая большая проблема, которую я видел, это то, что наши процессы теряют соединения сокетов или тайм-аут соединений. Некоторые из наших процессов взаимодействуют друг с другом через сокеты TCP. В некоторых случаях мы делаем сокетное соединение с удаленными системами (например, WMI, JDBC).
Я склонен полагать, что VM нуждается в ресурсах. У нас нет доступа к панелям администратора и производительности ESX. Я также узнал, что любые числа, которые предоставляют perfmon или диспетчер задач внутри виртуальной машины хоста, не являются истинным показателем работоспособности ОС хоста.
Я мог бы написать программу, которая выполняет математику с плавающей запятой и распечатывает затраченное время. Затем сравните это время с тем же самым, полученным на разных виртуальных машинах или реальных блоках Windows.
Этот подход достаточен для того, чтобы мы могли определить, действительно ли основной причиной является производительность виртуальной машины. Однако было бы намного проще убедить клиента, если бы существовал стандартный способ или инструмент для этого.
Есть один?