500データベースのSQL Server 2017-CU9以降頻繁にAGが切断する
みなさん、こんにちは。あなたの助けに感謝します。SQL Server 2017可用性グループで課題が発生しています。 バックグラウンド 会社は小売B2Bバックエンドソフトウェアです。約500の単一テナントデータベース、およびすべてのテナントで使用される5つの共有データベース。ワークロードの特性は主に読み取られ、データベースの大部分のアクティビティは非常に低くなっています。 コロケーションでホストされている物理的な運用サーバーは、共有SAN / FCI構成のWindows Server 2012上のSQL Server 2014 Enterpriseから、2ソケット/ 32コア/ 768 GB RAMおよびローカルのWindows Server 2016上のSQL Server 2017 Enterpriseに最近アップグレードされましたAlwaysOn AGを使用したSSDドライブ。AGトラフィックは、クロスケーブル接続で専用の10G NICポートを使用します。 それらの要件は、すべてのデータベースが一緒にフェールオーバーすることであるため、すべてを単一のAGに配置する必要がありました。これは、同一サーバー上の単一の読み取り不可能な同期レプリカです。 新しいサーバーは、2018年6月から運用されています。最新のCU(当時のCU7)とWindowsの更新プログラムがインストールされ、システムは正常に機能していました。約1か月後、サーバーをCU7からCU9に更新した後、サーバーは優先度の高い順に以下の課題に気付き始めました。 SQL Sentryを使用してサーバーを監視しており、物理的なボトルネックは観察されていません。すべての重要な指標は良いようです。CPUは平均20%、IO時間は通常1ミリ秒未満、RAMは完全に使用されておらず、ネットワークは1%未満です。 課題 フェールオーバー後に症状は良くなるようですが、どちらのサーバーがプライマリであるかに関係なく、数日以内に戻ってきます。症状は両方のサーバーで同じです。 次のような散発的なクライアントタイムアウトと接続障害 ...接続の確立中にエラーが発生しました... または 実行タイムアウトが切れました 場合によっては、これらは最大40秒間続き、その後沈静化します。 トランザクションログバックアップジョブの完了には、以前よりも10倍時間がかかります。以前は、500個すべてのデータベースのログをバックアップするのに2〜3分かかりましたが、現在では15〜25分かかります。バックアップ自体が良好なスループットで正常に実行されることを確認しました。ただし、1つのログのバックアップが完了してから次のログを開始するまでにわずかな遅延があります。非常に低い値から始まりますが、1〜2日で2〜3秒かかります。500個のデータベースを乗算すると、違いがあります。 時々、ランダムに見える一部のデータベースが、手動フェールオーバー後に「同期していない」状態のままになります。これを解決する唯一の方法は、セカンダリレプリカでSQL Serverサービスを再起動するか、これらのデータベースを削除してAGに再結合することです。 CU10で導入された別の問題(CU11では解決されていません):master.sys.databasesでのブロッキングのセカンダリタイムアウトへの接続、およびセカンダリレプリカにSSMSオブジェクトエクスプローラーを使用することさえできません。根本的な原因は、Microsoft SQL Server VSSライターが次のクエリを発行してブロックしているようです。 select name, recovery_model_desc, state_desc, CONVERT(integer, is_in_standby), ISNULL(source_database_id,0) from …