Çalışan iş parçacıklarımı kim kullanıyor? SQL Server 2014 - HADR


10

Son zamanlarda, sunuculardan birinin çalışan iş parçacıkları tükendiği SQL Server 2014 HADR ortamımızda bir sorun yaşadık.

Mesajı aldık:

AlwaysOn Kullanılabilirlik Grupları için iş parçacığı havuzu, yeterli kullanılabilir iş parçacığı olmadığından yeni bir iş parçacığı başlatamadı.

Başladığında hata mesajı

Sorunu analiz etmeme yardımcı olması için (düşündüğüm) bir ifade almak için başka bir soru açtım ( Hangi SPID'nin hangi zamanlayıcıyı (çalışan iş parçacığı) kullandığını görmek mümkün mü? ). Şimdi sistemi kullanarak iş parçacığı bulmak için sorgu var, ancak neden bu sunucu işçi iş parçacığı bitti anlamıyorum.

Çevremiz aşağıdaki gibidir:

  • 4 Windows Server 2012 R2
  • SQL Server 2014 Enterprise
  • 24 İşlemci -> 832 İş parçacığı
  • 256 GB RAM
  • 12 Kullanılabilirlik Grubu (genel)
  • 642 Veritabanları (genel)

Yani, sorunu olan sunucu aşağıdaki yapılandırmaya sahipti:

  • 5 Kullanılabilirlik Grubu (3 İlk / 2 Orta)
  • 325 Veritabanları (127 İlk / 198 Orta)
  • MAXDOP = 8
  • Cost Threshold for Parallelism = 50
  • Güç planı "Yüksek performans" olarak ayarlanmış

Sorunu "çözmek" için bir Kullanılabilirlik Grubunu ikincil sunucuya el ile geçemedik. Bu sunucunun yapılandırması şimdi:

  • 5 Kullanılabilirlik Grubu (2 Birincil / 3 İkincil)
  • 325 Veritabanları (77 Birincil / 248 İkincil)

Bu konu ile kullanılabilir konuları izliyorum:

declare @max int
select @max = max_workers_count from sys.dm_os_sys_info

select 
    @max as 'TotalThreads',
    sum(active_Workers_count) as 'CurrentThreads',
    @max - sum(active_Workers_count) as 'AvailableThreads',
    sum(runnable_tasks_count) as 'WorkersWaitingForCpu',
    sum(work_queue_count) as 'RequestWaitingForThreads' ,
    sum(current_workers_count) as 'AssociatedWorkers'
from  
    sys.dm_os_Schedulers where status='VISIBLE ONLINE'

Normalde sunucuda 250-430 civarında işçi iş parçacığı vardır, ancak sorun başladığında işçinin kalmamış olması gerekir.

-119 mevcut konu

Bugün, hiçbir yerden, mevcut işçiler 327'den 50'ye düştü, ama sadece bir dakika için ve sonra yaklaşık 400'e geri döndü.

Diğer soruyu zaten gördüm ( HADR yüksek iş parçacığı kullanımı ) ama bana yardımcı olmuyor.

Sistemimiz bir yıldan fazla bir süredir sorunsuz çalışıyordu. Veritabanlarının dağıtımında herhangi bir yük devretme veya başka büyük bir değişiklik olmadı.

Kopyalar arasında "Senkron taahhüt" kullanıyoruz. Anladığım kadarıyla, sıkıştırma yoktur , belgelerdeki Kullanılabilirlik grubu için sıkıştırmayı ayarlama konusuna bakın .

Herhangi bir işçi iş parçacığı ne kullanıyor bir fikri var mı?

DÜZENLEME: Tam olarak bu sorunlar hakkında çok fazla bilginin bulunduğu bu sayfayı buldum http://www.techdevops.com/Article.aspx?CID=24

Yanıtlar:


1

Topluluk wiki yanıtı :

Kullanılabilirlik gruplarında çok sayıda veritabanınız var, iş parçacıklarınızın gittiği yer burası olacak. Sıkıştırma, şifreleme ve taşıma maliyetiyle ilgili çok şey var. Sıkıştırmayı kapatmayı deneyin, iplik kullanımınızı yaklaşık üçte bir oranında azaltır (çoğaltma sayısına bağlı olarak).

Soru, varsayılan olarak sıkıştırma kullanacak olan SQL Server 2014 olarak etiketlenmiştir. SQL Server 2016, varsayılan olarak, senkronizasyon için sıkıştırma kullanmaz.

Örnekte çalışan iş parçacıklarını artırmanız veya daha iyisi gerekebilir: birden çok sunucudaki en etkin olanları ve etkin olmayanları dengelemek. İlgili S ve C AlwaysON Kullanılabilirlik grubu sorgusuna çok yavaş bakın .

Ayrıca, istekleri düzgün bir şekilde kapatamayan bir uygulama olduğunu da görebilirsiniz. Bu, etrafta çok fazla uyku seansı (işçiyi tüketen) ile sonuçlanabilir.

Gerçekte kullanılan iş parçacığı sayısı, veritabanlarının ne kadar etkin olduğuna bağlıdır. 1.000 veritabanınız olabilir ve çoğu zaman% 95 atılsa sorun yaşamayacaksınız. Veritabanlarınız daha sık aktif hale geldi ve daha fazla iş parçacığınızı yemiş gibi görünüyor. Bu uzun ve kısa.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.