Gürültülü Komşu kötü modeli

Azure

Çok kiracılı sistemler kiracılar arasında kaynakları paylaşır. Kiracılar aynı paylaşılan kaynakları kullandığından, bir kiracının etkinliği başka bir kiracının sistem kullanımını olumsuz etkileyebilir.

Sorun açıklaması

Birden çok müşteri veya kiracı tarafından paylaşılacak bir hizmet oluşturduğunuzda, çok kiracılı olacak şekilde oluşturabilirsiniz. Çok kiracılı sistemlerin avantajlarından biri, kaynakların havuza alınabilmesi ve kiracılar arasında paylaşılabilmesidir. Bu genellikle maliyetlerin düşmesine ve verimliliğin iyileştirilmesine neden olur. Ancak, tek bir kiracı sistemde bulunan kaynakların orantısız bir miktarını kullanırsa, sistemin genel performansı olumsuz etkilenebilir. Gürültülü komşu sorunu, başka bir kiracının etkinlikleri nedeniyle bir kiracının performansı düşük olduğunda oluşur.

İki kiracılı örnek bir çok kiracılı sistemi düşünün. A Kiracısı'nın kullanım düzenleri ve B kiracısının kullanım desenleri çakışır; bu da yoğun zamanlarda toplam kaynak kullanımının sistemin kapasitesinden yüksek olduğu anlamına gelir:

İki kiracının kaynak kullanımını gösteren şekil. A Kiracısı, sistem kaynaklarının tamamını tüketir, yani B kiracısı hatalarla karşılaşır.

Büyük olasılıkla kiracının ilk gelen isteği öncelikli olacaktır. Ardından diğer kiracı gürültülü bir komşu sorunuyla karşılaşır. Alternatif olarak, her iki kiracı da performansta sıkıntı yaşayabilir.

Gürültülü komşu sorunu, her kiracı sistem kapasitesinin nispeten küçük miktarlarını tükettiğinde bile ortaya çıkar, ancak birçok kiracının toplu kaynak kullanımı genel kullanımda zirveye neden olur:

Her biri çözümün en yüksek aktarım hızının altına inen 3 kiracılı şekil. Toplamda, üç kiracı tam sistem kaynaklarını kullanır.

Tümü benzer kullanım desenlerine sahip birden çok kiracınız olduğunda veya sistemdeki toplu yük için yeterli kapasite sağlamadığınızda bu durum oluşabilir.

Sorunun çözümü

Gürültülü komşu sorunları çok kiracılı sistemlerde doğal bir risktir ve gürültülü bir komşudan etkilenme olasılığını tamamen ortadan kaldırmak mümkün değildir. Ancak, hem istemcilerin hem de hizmet sağlayıcılarının gürültülü komşu sorunları olasılığını azaltmak veya gözlemlendiğinde etkilerini azaltmak için atabileceği bazı adımlar vardır.

İstemcilerin gerçekleştirebileceği eylemler

Hizmet sağlayıcılarının gerçekleştirebileceği eylemler

  • Sisteminizin kaynak kullanımını izleyin. Hem genel kaynak kullanımını hem de her kiracının kullandığı kaynakları izleyin. Kaynak kullanımında ani artışları algılamak için uyarıları yapılandırın ve mümkünse ölçeği artırarak veya genişleterek bilinen sorunları otomatik olarak azaltmak için otomasyonu yapılandırın.
  • Kaynak idaresi uygulama. Tek bir kiracının sistemi bunaltmasını ve başkalarının kullanabileceği kapasiteyi azaltmasını önleyen ilkeler uygulamayı göz önünde bulundurun. Bu adım, Azaltma deseni veya Hız Sınırlama deseni aracılığıyla kota zorlama biçimini alabilir.
  • Daha fazla altyapı sağlayın. Bu işlem, çözüm bileşenlerinizden bazılarını yükselterek ölçeği artırmayı veya Dağıtım Damgaları desenini izlerseniz Parçalama desenini veya damgaları izlerseniz ek parçalar sağlayarak ölçeği genişletmeyi kapsayabilir.
  • Kiracıların önceden sağlanan veya ayrılmış kapasite satın almasını sağlayın. Bu kapasite kiracılara çözümünüzün iş yüklerini yeterince işlediğine dair daha fazla kesinlik sağlar.
  • Kiracıların kaynak kullanımını düzeltin. Örneğin, aşağıdaki yaklaşımlardan birini deneyebilirsiniz:
    • Çözümünüzün birden çok örneğini barındırıyorsanız, örneklerde veya damgalarda kiracıları yeniden dengelemeyi göz önünde bulundurun. Örneğin, tahmin edilebilir ve benzer kullanım desenlerine sahip kiracıları, kullanımlarındaki zirveleri düzleştirme amacıyla birden çok damgaya yerleştirmeyi göz önünde bulundurun.
    • Arka plan işlemleriniz mi yoksa zamana duyarlı olmayan yoğun kaynak kullanan iş yükleriniz mi olduğunu düşünün. Zamana duyarlı iş yükleri için en yüksek kaynak kapasitenizi korumak için bu iş yüklerini yoğun olmayan zamanlarda zaman uyumsuz olarak çalıştırın.
  • Aşağı akış hizmetlerinizin gürültülü komşu sorunlarını azaltmak için denetimler sağlayıp sağlamadığını denetleyin. Örneğin, Kubernetes kullanırken pod sınırlarını kullanmayı ve Service Fabric kullanırken yerleşik idare özelliklerini kullanmayı göz önünde bulundurun.
  • Kiracıların gerçekleştirebileceği işlemleri kısıtlayın. Örneğin, kiracıların çok büyük veritabanı sorguları çalıştıracak işlemleri yürütmesini önleyin. Örneğin, sorgularda döndürülebilir kayıt sayısı veya zaman sınırı üst sınırı belirtin. Bu eylem, kiracıların diğer kiracıları olumsuz etkileyebilecek eylemler gerçekleştirme riskini azaltır.
  • Hizmet Kalitesi (QoS) sistemi sağlayın. QoS'yi uyguladığınızda, bazı işlemlerin veya iş yüklerinin önceliklerini diğerlerinden önce alırsınız. QoS'yi tasarımınıza ve mimarinize ekleyerek, kaynaklarınızda baskı olduğunda yüksek öncelikli işlemlerin öncelikli olmasını sağlayabilirsiniz.

Dikkat edilmesi gerekenler

Çoğu durumda, tek tek kiracılar gürültülü komşu sorunlarına neden olmak istemez. Tek tek kiracılar, iş yüklerinin başkaları için gürültülü komşu sorunlarına neden olduğunu bile fark edemeyebilir. Ancak, bazı kiracılar bir hizmete tek tek veya dağıtılmış hizmet reddi (DDoS) saldırısı yürüterek bir hizmete saldırmak için paylaşılan bileşenlerdeki güvenlik açıklarından yararlanabilir.

Nedeni ne olursa olsun, bu sorunları kaynak idare sorunları olarak ele almak ve sorunu azaltmak için kullanım kotaları, azaltma ve idare denetimleri uygulamak önemlidir.

Not

İstemcilerinize uyguladığınız azaltmaları veya hizmetinizdeki kullanım kotalarını belirttiğinizden emin olun. Başarısız istekleri güvenilir bir şekilde işlemeleri ve uyguladığınız sınırlamalar veya kotalar nedeniyle şaşırmamaları önemlidir.

Sorunu algılama

İstemci açısından bakıldığında, gürültülü komşu sorunu genellikle başarısız sunucu istekleri veya tamamlanması uzun süren istekler olarak gösterilir. Özellikle, aynı istek diğer zamanlarda başarılı olursa ve rastgele başarısız oluyorsa gürültülü bir komşu sorunu olabilir. İstemci uygulamaları, hizmetlere yönelik isteklerin başarı oranını ve performansını izlemek için telemetri kaydetmeli ve uygulamalar da karşılaştırma amacıyla temel performans ölçümlerini kaydetmelidir.

Hizmetin perspektifinden bakıldığında, gürültülü komşu sorunu çeşitli şekillerde görünebilir:

  • Kaynak kullanımında ani artışlar. Normal temel kaynak kullanımınızı net bir şekilde anlamanız ve kaynak kullanımında ani artışları algılamak için izleme ve uyarıları yapılandırmanız önemlidir. Hizmetinizin performansını veya kullanılabilirliğini etkileyebilecek tüm kaynakları dikkate aldığınızdan emin olun. Bu kaynaklar sunucu CPU ve bellek kullanımı, disk GÇ, veritabanı kullanımı, ağ trafiği gibi ölçümlerin yanı sıra isteklerin sayısı ve Azure Cosmos DB istek birimleri gibi yapay ve soyut performans ölçümleri gibi yönetilen hizmetler tarafından kullanıma sunulan ölçümleri içerir.
  • Kiracı için işlem gerçekleştirirken oluşan hatalar. Özellikle, kiracı sistem kaynaklarının büyük bir bölümünü kullanmadığında oluşan hataları arayın. Böyle bir desen, kiracının gürültülü komşu sorununun kurbanı olduğunu gösterebilir. Kiracıya göre kaynak tüketimini izlemeyi göz önünde bulundurun. Örneğin, Azure Cosmos DB kullanırken her istek için kullanılan istek birimlerini günlüğe kaydetmeyi ve kiracının tanımlayıcısını telemetriye boyut olarak eklemeyi göz önünde bulundurun; böylece her kiracı için istek birimi tüketimini toplayabilirsiniz.

Katkıda Bulunanlar

Bu makale Microsoft tarafından korunur. Başlangıçta aşağıdaki katkıda bulunanlar tarafından yazılmıştır.

Asıl yazar:

  • John Downs | Baş Müşteri Mühendisi, Azure için FastTrack

Diğer katkıda bulunanlar:

Genel olmayan LinkedIn profillerini görmek için LinkedIn'de oturum açın.