Ми помічаємо цікаву схему HADR_SYNC_COMMIT
очікувань у нашому середовищі. У нас є три репліки; одну первинну, одну вторинну синхронізацію та одну вторинну асинхронізацію в центрі обробки даних, і ми просто додали ще три репліки ASYNC в інший центр обробки даних (~ 2400 миль один від одного).
З тих пір ми почали помічати величезне збільшення HADR_SYNC_COMMIT
очікувань. Переглядаючи активні сеанси, ми бачимо купу COMMIT TRANSACTION
запитів, що очікують на репліку SYNC
З скріншоту ми чітко бачимо, що HADR_SYNC_COMMIT
29 червня спостерігається стрибок у очікуванні, і ми врешті-решт опівдні 1 липня опустили "дві" з трьох реплік асинхрони у віддалений центр обробки даних. Це значно скоротило час очікування разом з ним.
Що ми перевірили поки що - черга на відправлення журналу, чергу повторення, час останнього затвердіння та час останнього введення у віддалені репліки. У нас є безперервні спалахи дрібних транзакцій протягом робочого часу, а тому черги на надсилання досить невеликі в заданий час (від 60 КБ до 1 МБ).
Віддалені репліки майже не синхронізовані, різниця між часом останнього фіксації та останнім затверділим часом для будь-якого окремого lsn на репліках є дуже малою.
Мережева труба становить 10G, і ми змінили розмір буфера передачі з 256 мег до 2 гігів, це було зроблено за припущенням, що мережа скидає пакети і повторно передає їх; будь-який спосіб, який, здавалося, не дуже допомагає.
Отже, мені цікаво, що стосується реплік ASYNCHADR_SYNC_COMMIT
? Чи не повинна репліка SYNC самостійно залежати від цього типу очікування, чого я тут пропускаю?