Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu makale, kullanılabilirlik grubu çoğaltmaları arasında bildirilen aralıklı bağlantı zaman aşımlarını tanılamanıza yardımcı olur.
Aralıklı kullanılabilirlik grubu çoğaltma bağlantısı zaman aşımlarının belirtileri ve etkileri
Birincil ve ikincil çoğaltmaları sorgulama farklı sonuçlar döndürür
İkincil çoğaltmaları sorgulayan salt okunur iş yükleri eski verileri sorgulayabilir. Aralıklı çoğaltma bağlantısı zaman aşımları oluşursa, aynı verileri sorguladığınızda birincil çoğaltma veritabanındaki verilerde yapılan değişiklikler henüz ikincil veritabanına yansıtılmamaktadır. Daha fazla bilgi için İkincil çoğaltmada veri gecikme süresi bölümüne bakın.
Tanılama raporu kullanılabilirlik grubu eşitlenmedi
SQL Server Management Studio'daki Always On panosu, çoğaltmaları Eşitlenmiyor durumunda olan iyi durumda olmayan bir kullanılabilirlik grubu bildirebilir. Always On pano raporu çoğaltmalarının Eşitlenmiyor durumunda olduğunu da gözlemleyebilirsiniz .
Bu çoğaltmaların SQL Server hata günlüklerini gözden geçirdiğinizde, kullanılabilirlik grubundaki çoğaltmalar arasında bağlantı zaman aşımı olduğunu belirten aşağıdaki gibi iletileri gözlemleyebilirsiniz:
Birincil çoğaltmadan hata günlüğü
2023-02-15 07:10:55.500 spid43s Always On availability groups connection with secondary database terminated for primary database 'agdb' on the availability replica 'SQL19AGN2' with Replica ID: {<replicaid>}. This is an informational message only. No user action is required.
İkincil çoğaltmadan hata günlüğü
2023-02-15 07:11:03.100 spid31s A connection time-out has occurred on a previously established connection to availability replica 'SQL19AGN1' with id [<replicaid>]. Either a networking or a firewall issue exists or the availability replica has transitioned to the resolving role.
2023-02-15 07:11:03.100 spid31s Always On Availability Groups connection with primary database terminated for secondary database 'agdb' on the availability replica 'SQL19AGN1' with Replica ID: {<replicaid>}. This is an informational message only. No user action is required.
Aralıklı bağlantı sorunları ikincil çoğaltmanın yük devretme hazırlığını etkileyebilir
Kullanılabilirlik grubunu otomatik yük devretme için yapılandırıyorsanız ve zaman uyumlu işleme yük devretme ortağının birincil ile bağlantısı aralıklı olarak kesilirse, otomatik yük devretme başarısız olabilir.
Kullanılabilirlik grubu veritabanının o anda yük devretmeye hazır olup olmadığını belirlemek için sorgulayabilirsiniz sys.dm_hadr_database_replia_cluster_states . İkincil çoğaltmada yansıtma uç noktası durdurulduysa aşağıdaki sonuçlara bir örnek verilmiş:
SELECT drcs.database_name, drcs.is_failover_ready, ar.replica_server_name, ars.role_desc, ars.connected_state_desc,
ars.last_connect_error_description, ars.last_connect_error_number, ar.endpoint_url
FROM sys.dm_hadr_availability_replica_states ars JOIN sys.availability_replicas ar ON ars.replica_id=ar.replica_id
JOIN sys.dm_hadr_database_replica_cluster_states drcs ON ar.replica_id=drcs.replica_id
WHERE ars.role_desc='SECONDARY'
Otomatik yük devretme, çoğaltma bağlantısı zaman aşımıyla çakışıyorsa, yük devretme iş ortağı bilgisayarındaki birincil rolde kullanılabilirlik grubunu çevrimiçi duruma getirmeyebilir.
Bağlantı zaman aşımı hataları neleri gösterir?
Kullanılabilirlik grubu çoğaltma ayarı SESSION_TIMEOUTiçin varsayılan değer 10 saniyedir. Bu ayar her çoğaltma için yapılandırılır. Çoğaltmanın, bağlantı zaman aşımını bildirmeden önce iş ortağı çoğaltmasından yanıt almak için ne kadar bekleyeceğini belirler. Bir çoğaltma iş ortağı çoğaltmasından yanıt almazsa, Microsoft SQL Server hata günlüğünde ve Windows Uygulaması günlüğünde bağlantı zaman aşımı bildiriyor. Zaman aşımını bildiren çoğaltma hemen yeniden bağlanmayı dener ve beş saniyede bir denemeye devam eder.
Genellikle, bağlantı zaman aşımı algılanır ve yalnızca bir çoğaltma tarafından bildirilir. Ancak, bağlantı zaman aşımı her iki çoğaltma tarafından aynı anda bildirilebilir. Bu iletinin, bağlantı zaman aşımının önceden oluşturulmuş bir bağlantı veya yeni bir bağlantı kullanılarak oluşup oluşmadığına bağlı olarak farklı sürümleri vardır:
Message 35206 A connection timeout has occurred on a previously established connection to availability replica '<replicaname>' with id [<replicaid>]. Either a networking or a firewall issue exists or the availability replica has transitioned to the resolving role.
Message 35201 A connection timeout has occurred while attempting to establish a connection to availability replica '<replicaname>' with id [<replicaid>]. Either a networking or firewall issue exists, or the endpoint address provided for the replica is not the database mirroring endpoint of the host server instance.
İş ortağı çoğaltması zaman aşımı algılamayabilir. 35201 veya 35206 iletisini bildirebilir. Aksi takdirde, kullanılabilirlik grubu veritabanlarının her birine bağlantı kaybı bildirir:
Message 35267 Always On Availability Groups connection with primary/secondary database terminated for primary/secondary database '<databasename>' on the availability replica '<replicaname>' with Replica ID: {<replicaid>}. This is an informational message only. No user action is required.
Sql Server'ın hata günlüğüne ne rapor verdiğine ilişkin bir örnek aşağıda verilmiştir: Birincil çoğaltmada yansıtma uç noktasını durdurursanız, ikincil çoğaltma bir bağlantı zaman aşımı algılar ve ikincil çoğaltma hata günlüğünde 35206 ve 35267 iletileri bildirilir:
2023-02-15 07:11:03.100 spid31s A connection timeout has occurred on a previously established connection to availability replica 'SQL19AGN1' with id [<replicaid>]. Either a networking or a firewall issue exists or the availability replica has transitioned to the resolving role.
2023-02-15 07:11:03.100 spid31s Always On Availability Groups connection with primary database terminated for secondary database 'agdb' on the availability replica 'SQL19AGN1' with Replica ID:[<replicaid>]. This is an informational message only. No user action is required.
Bu örnekte birincil çoğaltma, ikincil ile iletişim kurmaya devam edebileceğinden bağlantı zaman aşımını algılamadı ve her kullanılabilirlik grubu veritabanı için 35267 iletisini bildirdi (bu örnekte yalnızca bir veritabanı vardır: 'agdb'):
2023-02-15 07:10:55.500 spid43s Always On Availability Groups connection with secondary database terminated for primary database 'agdb' on the availability replica 'SQL19AGN2' with Replica ID: {<replicaid>}. This is an informational message only. No user action is required.
Çoğaltma bağlantısı zaman aşımlarının nedenleri
Uygulama sorunu
SQL Server çeşitli nedenlerden dolayı meşgul olabilir ve kullanılabilirlik grubu SESSION_TIMEOUT süresi içinde yansıtma uç noktası bağlantısına hizmet vermez. Bu, bağlantı zaman aşımına neden olur. Bu nedenlerden bazıları şunlardır:
SQL Server yüzde 100 CPU kullanımıyla karşılaşır. Bu, SQL Server'ın veya başka bir uygulamanın bir kerede saniyeler boyunca CPU kullandığı anlamına gelir.
SQL Server verimsiz zamanlayıcı olaylarıyla karşılaşır. SQL Server iş parçacıkları, bir iş parçacığı zamanında verim sağlamazsa işlerini tamamlamak için zamanlayıcıyı (CPU) diğer iş parçacıklarına vermekle sorumludur.
SQL Server çalışan iş parçacığı tükenmesi, bellek yetersiz sorunları veya yansıtma uç noktası bağlantısına hizmet verme becerisini etkileyen uygulama sorunlarıyla karşılaşır.
Ağ sorunu
Bu, hata tetiklendiğinde birincil ve ikincil çoğaltmalarda ağ izleme günlüklerini toplamanızı gerektirir. Bunu yapmak için ağ gecikme süresini ve bırakılan paketleri inceleyebilirsiniz.
Çoğaltma bağlantısı zaman aşımlarını tanılama
SQL Server'ın iş ortağı çoğaltması ile bağlantıya hizmet vermesini engelleyen uygulama sorunları sorunu için, bu bölümde SQL Server günlüklerinin nasıl çözümleneceği açıklanmaktadır. Bu ipuçları, çoğaltma bağlantısı zaman aşımlarının kök nedenini belirlemenize yardımcı olabilir. Bu bölüm, ağ durumunu denetleyebilmeniz için bağlantı zaman aşımları oluştuğunda ağ izlemelerini toplama hakkında daha gelişmiş yönergelerle sona erer.
Çoğaltma bağlantısı zaman aşımlarının zamanlamasını ve konumunu değerlendirme
Bağlantı zaman aşımlarının geçmişini, sıklığını ve eğilimlerini gözden geçirin. SQL Server hata günlüğünde bulduğunuz iletileri kullanmak bunu yapmak için harika bir yoldur. Bağlantı zaman aşımları nerede bildirilir? Bunlar sürekli olarak birincil çoğaltmada mı yoksa ikincil çoğaltmada mı bildiriliyor? Hatalar ne zaman oluştu? Ayın belirli bir haftasında mı, haftanın gününde mi yoksa günün saatinde mi oluştular? Diğer zamanlanmış bakım veya toplu işlem, bağlantı zaman aşımlarının gözlemlendiği saatlere karşılık geliyor mu? Bu değerlendirme, kök nedeni belirlemek için bağlantı zaman aşımlarını kapsamanıza ve ilişkilendirmenize yardımcı olabilir.
genişletilmiş AlwaysOn_health olay oturumunu gözden geçirin
Genişletilmiş AlwaysOn_health olay oturumu, bir çoğaltma iş ortağı çoğaltmasıyla ucs_connection_setup bağlantı kurarken tetiklenen olayı içerecek şekilde geliştirilmiştir. Bu, bağlantı zaman aşımı sorunlarını giderirken yararlı olabilir.
Not
Genişletilmiş ucs_connection_setup olay en son SQL Server toplu güncelleştirmelerine eklendi. Bu genişletilmiş olayı gözlemlemek için en son toplu güncelleştirmeleri çalıştırıyor olmanız gerekir.
Her Zaman Açık Dağıtılmış Yönetim Görünümlerini (DMV' ler) Sorgulama
Çoğaltmanın bağlı durumu hakkında daha fazla bilgi için Always On DMV'lerini sorgulayabilirsiniz. Bu sorgu yalnızca bağlı durumu ve sorunların oluştuğu sırada bağlantı zaman aşımıyla ilişkili hataları bildirir. Bağlantı sorunları aralıklıysa, sorgu bağlantısız durumu kolayca yakalamayabilir.
SELECT ar.replica_server_name, ars.role_desc, ars.connected_state_desc,
ars.last_connect_error_description, ars.last_connect_error_number, ar.endpoint_url
FROM sys.dm_hadr_availability_replica_states ars JOIN sys.availability_replicas ar ON ars.replica_id=ar.replica_id
Aşağıdaki örnekte, birincil çoğaltmadaki yansıtma uç noktası durdurulduğu için sürekli bağlantısı kesilmiş bir durum gösterilmektedir. Always On DMV, birincil çoğaltmayı sorgulayarak birincil ve tüm ikincil çoğaltmaları raporlayabilir (uç nokta birincil çoğaltmada devre dışı bırakılır).
Always On DMV'leri ikincil çoğaltmayı sorgulayarak yalnızca ikincil çoğaltmayı raporlar.
Always On genişletilmiş olay oturumunu gözden geçirin
SQL Server Management Studio (SSMS) Nesne Gezgini kullanarak her çoğaltmaya bağlanın
AlwaysOn_healthve genişletilmiş olay dosyalarını açın.SSMS'de Dosya>Aç'a gidin ve Genişletilmiş Olay Dosyalarını Birleştir'i seçin.
Ekle düğmesini seçin.
Dosya Aç iletişim kutusunda, SQL Server \LOG dizinindeki dosyalara gidin.
Control tuşuna basın ve ardından adı 'AlwaysOn_healthxxx.xel' ile başlayan dosyaları seçin.
Aç'ı ve ardından Tamam'ı seçin.
SSMS'de AlwaysOn olaylarını gösteren yeni bir sekmeli pencere görmeniz gerekir.
Aşağıdaki ekran görüntüsünde ikincil çoğaltmadaki
AlwaysOn_healthveriler gösterilmektedir. İlk ana hatlı kutu, birincil çoğaltmadaki uç nokta durdurulduktan sonra bağlantı kaybını gösterir. İkinci ana hatlı kutu, ikincil çoğaltmanın birincil çoğaltmaya bağlanmayı bir sonraki denemesinde oluşan bağlantı hatasını gösterir.
Verimsiz olayların bağlantı zaman aşımlarına neden olup olmadığını denetleyin
Kullanılabilirlik çoğaltmasının iş ortağı çoğaltma bağlantısına hizmet verememesinin en yaygın nedenlerinden biri, verimsiz bir zamanlayıcıdır. Verimsiz zamanlayıcılar hakkında daha fazla bilgi için bkz . SQL Server Zamanlama ve Verim Sorunlarını Giderme.
SQL Server, 5-10 saniye kadar kısa olan verimsiz zamanlayıcı olaylarını izler. Bu olayları bileşen çıkışındaki TrackingNonYieldingScheduler veri noktasında sp_server_diagnostics query_processing raporlar.
Çoğaltma bağlantısı zaman aşımlarına neden olabilecek verimsiz olayları denetlemek için şu adımları izleyin:
Beş saniyede bir kaydeden
sp_server_diagnosticsbir SQL Aracısı işi oluşturun.Bağlantı zaman aşımını bildirmeyen sunucuda bu işi zamanlayın. Başka bir ifadeyle, Sunucu A çoğaltması çoğaltma bağlantı zaman aşımını hata günlüğünde bildirirse, iş ortağı çoğaltması olan Sunucu B'de SQL Aracısı işini ayarlayın. Alternatif olarak, her iki çoğaltmada da bağlantı zaman aşımları görüyorsanız, işi her iki çoğaltmada da oluşturun.
Beş saniyede bir çalışan
sp_server_diagnostics, çıkışı bir metin dosyasına ekleyen ve ardından işi başlatan bir iş oluşturmak için aşağıdaki toplu iş dosyasını çalıştırın. Aşağıdaki örnekteki komut beşsp_server_diagnostics 5saniyede bir yürütülür. Bu nedenle, bu işi beş saniyede bir çalışacak şekilde zamanlamaya gerek yoktur, yalnızca işi başlatın ve durdurulana kadar, her beş saniyede bir çalışır:USE [msdb] GO DECLARE @ReturnCode INT SELECT @ReturnCode = 0 DECLARE @jobId BINARY(16) EXEC @ReturnCode = msdb.dbo.sp_add_job @job_name=N'Run sp_server_diagnostics', @owner_login_name=N'sa', @job_id = @jobId OUTPUT /****** Object: Step [Run SP_SERVER_DIAGNOSTICS] Script Date: 2/15/2023 4:20:41 PM ******/ EXEC @ReturnCode = msdb.dbo.sp_add_jobstep @job_id=@jobId, @step_name=N'Run SP_SERVER_DIAGNOSTICS', @subsystem=N'TSQL', @command=N'sp_server_diagnostics 5', @database_name=N'master', @output_file_name=N'D:\cases\2423\sp_server_diagnostics_output.out', @flags=2 EXEC @ReturnCode = msdb.dbo.sp_add_jobserver @job_id = @jobId, @server_name = N'(local)' EXEC sp_start_job 'Run sp_server_diagnostics'Not
Bu komutlarda, geçerli bir yola geçin
@output_file_nameve bir dosya adı sağlayın.
Sonuçları analiz etme
Bağlantı zaman aşımı bildirildiğinde, SQL Server hata günlüğünde gösterilen zaman aşımı olayının zaman damgasını not edin. Aşağıdaki örnekteki çoğaltmalar için çoğaltma SQL19AGN1 bağlantısı zaman aşımlarını bildirmektedir. Bu nedenle, iş ortağı çoğaltması üzerinde SQL19AGN2bir SQL Aracısı işi oluşturulmuştur. Ardından, hata günlüğünde 07:24:31'de SQL19AGN1 bir bağlantı zaman aşımı bildirildi.
Daha sonra, sp_server_diagnostics çalıştıran SQL Aracısı işinden elde edilen çıkış, bildirilen zamanda denetlenerek TrackingNonYieldingScheduler özellikle bileşen çıkışındaki query_processing veri noktasını gözden geçirir. Çıkış, çoğaltma bağlantısı zaman aşımının SQL19AGN1 bildirildiği zaman (07:24:31'de) sunucu SQL19AGN2 (07:24:33'te) verim vermeyen bir zamanlayıcının izlendiğini (sıfır olmayan onaltılık değer olarak) bildirir.
Not
Aşağıdaki sp_server_diagnostics çıkış, hem (zaman damgası) query_processing TrackingNonYieldingScheduler hem de create_time sonuçları gösterecek şekilde birleştirilir.
Verimsiz bir zamanlayıcı olayını araştırma
Önceki tanılama adımlarından çoğaltma bağlantısı zaman aşımına neden olan verimsiz bir olayın olduğunu doğruladıysanız:
Verimsiz olaylar çalıştırıldığında SQL Server'da çalışan iş yüklerini tanımlayın.
Çoğaltma bağlantısı zaman aşımlarına benzer şekilde, gerçekleşen ay, gün veya hafta boyunca bu olaylardaki eğilimleri arayın.
Verimsiz olayın algılandığı sistemde performans izleyicisi izlemesini toplayın.
İşlemci::% İşlemci Süresi, Bellek::Kullanılabilir MBytes, Mantıksal Disk::Ortalama Disk Kuyruğu Uzunluğu ve Mantıksal Disk::Ort Disk sn/Aktarım gibi sistem kaynakları için temel performans sayaçlarını toplayın.
Gerekirse, bu verimsiz olayların kök nedenini bulma konusunda daha fazla yardım için bir SQL Server destek olayı açın. Daha fazla analiz için topladığınız günlükleri paylaşın.
Gelişmiş Veri Toplama: Bağlantı zaman aşımı sırasında ağ izlemesi toplama
SQL Server uygulamasının önceki tanılaması bir kök neden oluşturmadıysa, ağı denetlemeniz gerekir. Ağın başarılı analizi, bağlantı zaman aşımı süresini kapsayan bir ağ izlemesi toplamanızı gerektirir.
Aşağıdaki yordam, SQL Server hata günlüklerinde bağlantı zaman aşımlarının bildirildiği çoğaltmalarda bir Windows netsh ağ izlemesi başlatır. SQL Server bağlantı hatalarından biri Uygulama günlüğüne kaydedildiğinde Windows zamanlanmış olay görevi tetikleniyor. Zamanlanan görev, anahtar ağ izleme verilerinin netsh üzerine yazılmaması için ağ izlemesini durdurmak için bir komut çalıştırır. Bu adımlarda toplu iş ve izleme günlükleri için *F:* yolu da varsayılır. Bu yolu ortamınıza göre ayarlayın.
Bağlantı zaman aşımlarının gerçekleştiği iki çoğaltmada aşağıdaki kod parçacığında gösterildiği gibi bir ağ izlemesi başlatın:
netsh trace start capture=yes persistent=yes overwrite=yes maxsize=500 tracefile=f:\trace.etl35206 veya 35267 olaylarında izlemeyi durduran
netshWindows zamanlanmış görevleri oluşturun. Bu görevleri bir yönetim komut satırında oluşturabilirsiniz:schtasks /Create /tn Event35206Task /tr F:\stoptrace.bat /SC ONEVENT /EC Application /MO *[System/EventID=35206] /f /RL HIGHEST schtasks /Create /tn Event35267Task /tr F:\stoptrace.bat /SC ONEVENT /EC Application /MO *[System/EventID=35267] /f /RL HIGHESTOlay gerçekleştikten ve ağ izlemeleri durdurulduktan ve yakalandıktan sonra görevleri silebilirsiniz
ONEVENT:PS C:\Users\sqladmin> Schtasks /Delete /tn Event35206Task /F PS C:\Users\sqladmin> Schtasks /Delete /tn Event35267Task /F
Ağ izlemesinin analizi bu sorun gidericinin kapsamı dışındadır. Ağ izlemesini yorumlayamazsanız Microsoft SQL Server Destek ekibine başvurun ve kök neden analizi için istenen diğer günlük dosyalarıyla birlikte izleme sağlayın.
Bağlantı zaman aşımlarını azaltmak için başka ne yapabilirim?
Varsayılan kullanılabilirlik grubu olan SESSION_TIMEOUT, 10 saniye için yapılandırılır. Kullanılabilirlik grubu çoğaltma SESSION_TIMEOUT özelliğini ayarlayarak bağlantı zaman aşımlarını azaltabilirsiniz. Bu ayar çoğaltma başınadır. Bunu birincil ve etkilenen her ikincil çoğaltma için ayarlayın. Aşağıda söz diziminin bir örneği verilmiştır. Varsayılan SESSION_TIMEOUT değer 10'dur. Bu nedenle, sonraki değer olarak 15 kullanabilirsiniz.
ALTER AVAILABILITY GROUP ag
MODIFY REPLICA ON 'SQL19AGN1' WITH (SESSION_TIMEOUT = 15);






