Düzenle

Aracılığıyla paylaş


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

Azure

Çok kiracılı sistemler iki veya daha fazla kiracı arasında kaynak 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 artmasına neden olur. Ancak, tek bir kiracı sistemde bulunan kaynakların orantısız bir miktarını kullanıyorsa, sistemin genel performansı zarar görebilir. 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ı sistem düşünün. A Kiracısı'nın kullanım düzenleri ve B kiracısı kullanım desenleri çakıştı. A kiracısı yoğun zamanlarda sistemin tüm kaynaklarını kullanır ve bu da B kiracısının yaptığı isteklerin başarısız olduğu anlamına gelir. Başka bir deyişle, toplam kaynak kullanımı sistemin kapasitesinden daha yüksektir:

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

Büyük olasılıkla önce gelen kiracının 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 performanslarının kötü olduğunu fark edebilir.

Gürültülü komşu sorunu, her kiracı sistemin 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ı azaltan 3 kiracılı şekil. Toplamda, üç kiracı tüm sistem kaynaklarını kullanır.

Bu durum, 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 oluşabilir.

Sorunun çözümü

Gürültülü komşu sorunları, tek bir kaynağı paylaştığınızda 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 düzeni aracılığıyla kota zorlama biçiminde olabilir.
  • 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 içerebilir.
  • 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, kullanımlarındaki zirveleri düzleştirme amacıyla birden çok damgaya tahmin edilebilir ve benzer kullanım desenlerine sahip kiracılar 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'i 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 kısıtlayın; ö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 gereken noktalar

Ç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ış bir 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 karşısında şaşırmamaları önemlidir.

Sorunu algılama

İstemci açısından bakıldığında, gürültülü komşu sorunu genellikle hizmete yönelik başarısız istekler 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 görünüyorsa 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 anlamak ve kaynak kullanımında ani artışları algılamak için izleme ve uyarıları yapılandırmak önemlidir. Hizmetinizin performansını veya kullanılabilirliğini etkileyebilecek tüm kaynakları göz önünde bulundurduğunuzdan emin olun. Bu kaynaklar sunucu CPU ve bellek kullanımı, disk GÇ, veritabanı kullanımı, ağ trafiği gibi ölçümleri ve istek 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, bir kiracı sistem kaynaklarının büyük bir bölümünü kullanmadığında oluşan hataları arayın. Böyle bir düzen, 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 yönetilir. Başlangıçta aşağıdaki katkıda bulunanlar tarafından yazılmıştır.

Asıl yazar:

Diğer katkıda bulunanlar:

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