Nasze oprogramowanie zachowuje się wyjątkowo u jednego z klientów, gdzie jest uruchamiane na maszynie wirtualnej z systemem Windows 2008. Hostem jest VMWare ESX Server.
Największym problemem, jaki widziałem, jest to, że nasze procesy upuszczały połączenia gniazd lub upłynęły limity czasu połączeń gniazd. Niektóre z naszych procesów komunikują się ze sobą przez gniazda TCP. W niektórych przypadkach łączymy gniazda z systemami zdalnymi (np. WMI, JDBC).
Jestem przekonany, że maszyna wirtualna jest pozbawiona zasobów. Nie mamy dostępu do pulpitów administratora / wydajności ESX. Dowiedziałem się również, że wszelkie liczby wykonywane przez perfmon lub menedżera zadań w maszynie wirtualnej hosta nie są prawdziwym wskaźnikiem stanu systemu operacyjnego hosta.
Mógłbym napisać program, który zajmuje się matematyką zmiennoprzecinkową i drukuje poświęcony czas. Następnie porównaj ten czas z czasem uzyskanym na różnych maszynach wirtualnych lub rzeczywistych polach Windows.
To podejście jest wystarczające, abyśmy mogli ustalić, czy podstawową przyczyną jest rzeczywiście wydajność maszyny wirtualnej. Byłoby jednak znacznie łatwiej przekonać klienta, gdyby istniał standardowy sposób lub narzędzie do tego.
Czy jest jeden