Мы замечаем интересную схему HADR_SYNC_COMMIT
ожидания в нашей среде. У нас есть три реплики; один первичный, один вторичный синхронизатор и один вторичный асинхронный в центре обработки данных, и мы только что добавили еще три реплики ASYNC в другой центр обработки данных (на расстоянии ~ 2400 миль).
С тех пор мы начали замечать огромный рост HADR_SYNC_COMMIT
ожиданий. Когда мы смотрим на активные сеансы, мы видим группу COMMIT TRANSACTION
запросов, ожидающих реплики SYNC
На скриншоте мы ясно видим, что HADR_SYNC_COMMIT
29 июня произошел скачок в ожидании, и мы в конечном итоге отбросили «две» из трех асинхронных реплик в удаленном центре данных где-то в полдень 1 июля. Это значительно сократило время ожидания.
Что мы проверили до сих пор - Журнал очереди на отправку, Повторить очередь, время последней защиты и время последней фиксации на удаленных репликах. У нас есть непрерывные пакеты небольших транзакций в рабочее время, и поэтому очереди отправки довольно малы в данный момент времени (где-то между 60 КБ и 1 МБ).
Удаленные реплики почти синхронизированы, разница между временем последнего принятия и последним усиленным временем очень мала для каждого отдельного lsn в репликах.
Канал сети - 10G, и мы изменили размер буфера передачи с 256 мегабайт до 2 гигабайт, это было сделано в предположении, что сеть отбрасывает пакеты и повторно передает их; в любом случае это не очень помогло.
Итак, мне интересно, какое отношение имеют реплики ASYNC к HADR_SYNC_COMMIT
ожиданиям? Разве реплика SYNC не должна зависеть в одиночку от этого типа ожидания, чего мне здесь не хватает?