Wir sehen, dass sich unsere Software bei einem Kunden ungewöhnlich verhält, wenn sie in einer virtuellen Windows 2008-Maschine ausgeführt wird. Der Host ist VMWare ESX Server.
Das größte Problem, das ich gesehen habe, ist, dass unsere Prozesse Socket-Verbindungen oder Socket-Verbindungen abbrechen. Einige unserer Prozesse kommunizieren über TCP-Sockets miteinander. In einigen Fällen stellen wir eine Socket-Verbindung zu Remote-Systemen (z. B. WMI, JDBC) her.
Ich bin zu der Überzeugung gelangt, dass die VM keine Ressourcen mehr hat. Wir haben keinen Zugriff auf ESX Admin / Performance-Dashboards. Ich habe auch erfahren, dass alle Zahlen, die Perfmon oder Task-Manager in der Host-VM bereitstellen, keine echten Hinweise auf den Zustand des Host-Betriebssystems sind.
Ich könnte ein Programm schreiben, das eine Menge Gleitkomma-Mathematik ausführt und die benötigte Zeit druckt. Vergleichen Sie dann diese Zeit mit der gleichen Zeit, die Sie auf verschiedenen VMs oder echten Windows-Boxen erhalten haben.
Dieser Ansatz reicht aus, um feststellen zu können, ob die Hauptursache tatsächlich die VM-Leistung ist. Es wäre jedoch viel einfacher, den Kunden davon zu überzeugen, ob es einen Standardweg oder ein Standardwerkzeug dafür gibt.
Ist dort eines?