Yazılımımızın Windows 2008 sanal makinesinde çalıştırıldığı müşterilerden birinde alışılmadık şekilde davrandığını görüyoruz. Ana bilgisayar VMWare ESX Sunucusudur.
Gördüğüm en büyük sorun, süreçlerimizin soket bağlantılarını düşürmesi veya soket bağlantılarının zaman aşımına uğraması. İşlemlerimizden bazıları TCP soketleri üzerinden birbirleriyle iletişim kurar. Bazı durumlarda uzak sistemlere (örn. WMI, JDBC) soket bağlantısı kurarız.
VM'nin kaynakları aç bıraktığına inanıyorum. ESX yönetici / performans gösterge tablolarına erişimimiz yok. Ayrıca, ana makine VM'sindeki perfmon veya görev yöneticisinin sağladığı herhangi bir sayının ana bilgisayar işletim sistemi sağlığının doğru göstergesi olmadığını öğrendim.
Kayan nokta matematiği yapan ve geçen zamanı basan bir program yazabilirim. Ardından bu zamanı farklı VM'lerde veya gerçek Windows kutularında elde edilenle karşılaştırın.
Bu yaklaşım, temel nedenin gerçekten de VM performansı olup olmadığını belirleyebilmemiz için yeterlidir. Bununla birlikte, bunu yapmak için standart bir yol veya araç varsa, müşteriyi ikna etmek çok daha kolay olacaktır.
Bir tane var mı?