Nous constatons que notre logiciel se comporte de manière inhabituelle chez l'un des clients où il est exécuté sur une machine virtuelle Windows 2008. L'hôte est VMWare ESX Server.
Le plus gros problème que j'ai vu est que nos processus abandonnent les connexions de socket ou que les connexions de socket expirent. Certains de nos processus communiquent entre eux via des sockets TCP. Dans certains cas, nous établissons une connexion socket avec des systèmes distants (par exemple, WMI, JDBC).
Je suis amené à croire que la VM manque de ressources. Nous n'avons pas accès aux tableaux de bord d'administration / de performance ESX. J'ai également appris que les chiffres fournis par perfmon ou le gestionnaire de tâches à l'intérieur de la machine virtuelle hôte ne sont pas une véritable indication de la santé du système d'exploitation hôte.
Je pourrais écrire un programme qui fait beaucoup de mathématiques en virgule flottante et affiche le temps pris. Comparez ensuite ce temps à celui obtenu sur différentes machines virtuelles ou de véritables fenêtres Windows.
Cette approche est suffisante pour que nous puissions déterminer si la cause première est bien les performances des VM. Cependant, il serait beaucoup plus facile de convaincre le client s'il existait une méthode ou un outil standard pour ce faire.
Est-ce qu'il y a un?