Genellikle, yerinde, debian-kararlı tabanlı uygulamamızın kurulumu sanal bir makinede çalışır - tipik olarak VMware ESXi'de. Genel durumda, sanallaştırma ortamlarında görünürlük ya da etkileme yapmıyoruz ve örneğin VMware vCenter istemcisine ya da eşdeğerine erişimimiz yok. Burada VMware'e odaklanıyorum, çünkü bu gördüğümüz en yaygın olanı.
Biz isteriz:
- Müşterinin VMware yöneticisine söyleyin: Uygulamamızı, örneğin X, Y ve Z performans kriterlerini karşıladığı sürece VMware ESX ortamınızda çalıştırabilirsiniz.
- X, Y ve Z ölçütlerinin aslında sürekli olarak karşılanıp karşılanmadığını (örneğin şu anda ), çalışan bir sistemde bile (uygulamalarımızı durduramaz ve referansları çalıştıramıyoruz, ve başlangıçta bir kıyaslama yeterli olmaz) belirleyebiliyor. sanal ortamlar zamanla değişir).
- X, Y ve Z kriterleri yerine getirilirse, uygulamamızı tatmin edici bir performansla yürütmek için yeterli sanal HW kaynağımızın olacağından emin olun.
Şimdi X, Y ve Z nedir?
Zaman zaman tekrar gördük, performans sorunları olduğunda sorunun bizim uygulamamızla değil sanallaştırma ortamı ile olduğunu gördük. Örneğin, başka bir sanal makine tonlarca CPU, bellek ya da disklerin depolandığı SAN'ı kullanır ve uygulamamız dışında bir şey kullanır. Şu anda bunu ispatlamanın ya da ispatlamanın bir yolu yok.
Teorik olarak, bazen uygulamamızın yavaş olması da mümkün olabilir ... ;-)
Kişi performans sorunlarımızın kök nedenini nasıl belirler: Sanal ortam mı yoksa uygulamamız mı?
Performans sorunları için genellikle 3 alan vardır: CPU, Memory ve DISK G / Ç.
İşlemci
Örneğin VMware'de, yönetici MHz olarak ifade edilen Rezervasyon ve Sınırı belirleyebilir, ancak örneğin bir ESX sunucusunda 512 MHz ile tam olarak başka bir ESX sunucusunda 512 MHz ile aynı, muhtemelen tamamen farklı bir ESX kümesinde?
Peki kişi bunu gerçekten alıp alamayacağımızı nasıl ölçüyor? Uygulamamız çalışırken 4 CPU'da% 212 CPU kullanımında olduğumuzu görebiliriz. Uygulamamız çok iş yapıyor mu yoksa aynı ana bilgisayardaki başka bir VM de CPU yoğun bir işlem yürütüyor ve tüm CPU'yu kullanıyor mu?
Hafıza (Balonculuk?)
Örneğin 16GB RAM istersek, bu sık sık yapılandırılır, ancak balon nedeniyle, aslında sadece 4 GB alırız ve sürpriz, uygulamamız yetersiz performans gösterir.
Biri VMware araçlarına mevcut balonla ilgili sorular sorabilir, ancak bunun sık sık yalan söylediğini (veya en azından yanlış olduğunu) bulduk. İşletim sisteminin 16GB toplam RAM olduğunu düşündüğü örnekleri gördük, tüm işlemlerin yerleşik belleğinin (RSS) toplamı 4GB RAM'dir, ancak VMware araçları bize 0 balonlama olduğunu söylese bile yalnızca 2GB RAM ücretsizdir: - (
Ayrıca, yalnızca RSS eklenmesi de geçerli değildir, çünkü kolayca paylaşılan RAM'ler olabilir, örneğin kopyalanabilen bellek. 512 MB + 512 MB mutlaka 1 GB anlamına gelmez, ancak daha az bir şey ifade eder. Bu nedenle, ne kadar RAM'in boşalması gerektiğine dair bir önlem almak ve böylece balonları güvenilir şekilde tespit etmek için kimse RSS'i tüm işlemlerden çıkaramaz. Bazı balon olaylarını saptayabilir, ancak balonlamanın etkin olduğu ancak bu yöntemle tespit edilemeyen başka durumlar da vardır.
Disk G / Ç
Sanırım zamanla disk okuma ve yazma sayısını, okunan ve yazılan bayt sayısını ve% IO'yu bekleyeceğimizi çizebiliriz. Fakat bu bize disk G / Ç’nin doğru bir resmini verir mi? Tüm CPU'yu kullanan başka bir VM'de çalışan bir bitcoin madencisi varsa, temeldeki SAN tam olarak aynı performans gösterse bile, bizim CPU kaynaklarımızın azalması ve dolayısıyla IO'nun beklemesi nedeniyle IO% bekleme oranının artacağını hayal ediyorum ( % olarak ölçülür ) yükselir.
Öyleyse, özet olarak, örneğin bir VMware yöneticisi tanımlamak için hangi dili kullanabiliriz, taşınabilir ve ölçülebilir bir şekilde hangi performansa ihtiyacımız var?
"It runs fine with x, y, and z"
yeterince kesin değil. Müşterilerinize tam olarak uygulamanızın ne istediğini söyleyebilmeniz gerekir. Size bu kaynakları veriyorlarsa ve uygulama kötü performans gösteriyorsa, sorun değil "What do we need from a resource perspective?"
, ama"Why is it performing poorly even though the proper resources have been allocated?"