Stiamo vedendo il nostro software comportarsi in modo insolito presso uno dei clienti in cui viene eseguito all'interno di una macchina virtuale Windows 2008. L'host è VMWare ESX Server.
Il problema più grande che ho visto è che i nostri processi eliminano le connessioni socket o il timeout delle connessioni socket. Alcuni dei nostri processi comunicano tra loro tramite socket TCP. In alcuni casi realizziamo connessioni socket a sistemi remoti (es. WMI, JDBC).
Sono indotto a credere che la VM sia priva di risorse. Non abbiamo accesso ai dashboard di amministrazione / prestazioni ESX. Ho anche appreso che tutti i numeri forniti da perfmon o task manager all'interno della VM host non sono una vera indicazione della salute del sistema operativo host.
Potrei scrivere un programma che fa un sacco di matematica a virgola mobile e stampa il tempo impiegato. Quindi confrontare quel tempo con lo stesso ottenuto su macchine virtuali diverse o caselle di Windows reali.
Questo approccio è sufficiente per poter determinare se la causa principale è effettivamente la prestazione della VM. Tuttavia, sarebbe molto più semplice convincere il cliente se esistesse un metodo o uno strumento standard per farlo.
Ce n'è uno?