Estamos viendo que nuestro software se comporta de manera inusual en uno de los clientes donde se ejecuta dentro de una máquina virtual Windows 2008. El host es VMWare ESX Server.
El mayor problema que he visto es que nuestros procesos desconectan las conexiones de socket o las conexiones de socket caducan. Algunos de nuestros procesos se comunican entre sí a través de sockets TCP. En algunos casos, hacemos conexiones de socket a sistemas remotos (por ejemplo, WMI, JDBC).
Me hacen creer que la VM no tiene recursos. No tenemos acceso a los paneles de administración / rendimiento de ESX. También he aprendido que los números que ofrece el administrador de tareas o el administrador de tareas dentro de la VM del host no son una indicación real del estado del SO del host.
Podría escribir un programa que haga un montón de matemáticas de punto flotante e imprima el tiempo necesario. Luego compare ese tiempo con el mismo obtenido en diferentes máquinas virtuales o cajas de Windows reales.
Este enfoque es suficiente para que podamos determinar si la causa raíz es el rendimiento de la VM. Sin embargo, sería mucho más fácil convencer al cliente si hubiera una forma o herramienta estándar para hacerlo.
¿Hay uno?