Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Ограничение скорости репликации AlwaysOn порядка 50МБ/сек?  [new]
and.dba
Member

Откуда:
Сообщений: 1
Есть кластер серверов БД SQL Server 2016 SP1 Enterprise (13.0.4001.0) и группа доступности в asynchronous-commit режиме.
Возникают проблемы с задержками репликации на secondary ноды при большом количестве изменённых данных на primary ноде.
Например, index rebuild или обновление большого кол-ва строк, которые на primary ноде выполняются за 30 секунд, на secondary ноду могут "приехать" с задержкой 10 минут.
"Железо" хорошее, мощное, одинаковое на всех нодах. Проблем с загрузкой "железа" на secondary нодах нет.
Ошибок, блокировок, дедлоков на secondary нодах во время отставания репликации нет.
В perfmon на всех secondary нодах примерно одинаковое максимальное пиковое значение "Redone Bytes/sec" - порядка 55 мегабайт/сек.
"Log Bytes Recived/sec" и "Log Bytes Decompressed/sec" (если включена компрессия) - в разы больше чем "Redone Bytes/sec".
После массовых изменений на primary копится большая Redone queue на secondary.

Пробовал:
1) alter endpoint encryption = disabled для endpoints, через которые работает AlwaysOn - не помогло.
2) включать trace flag T1462 (Disables log stream compression for asynchronous availability groups) - не помогло.
3) включать trace flag T9591 (Disables log block compression in Always On Availability Groups) - не помогло.
4) отключать hyperthreading - не помогло.

Вот здесь вот (http://www.sqlsaturday.com/SessionDownload.aspx?suid=12181) пишут:
SQL Server 2012 single threaded redo - ~45MB/sec
SQL Server 2016 multi-threaded redo - ~600MB/sec
Хотя непонятно что именно значат эти цифры и откуда их взяли

А вот здесь (https://www.sandisk.com/content/dam/sandisk-main/en_us/assets/resources/enterprise/white-papers/sql-server-2016-ags-on-hpe-dl380-gen9-using-hpe-12g-sas-2.5in-ssds-wp.pdf) пишут:
...However, limitations to AG secondary log redo remain the system bottleneck. The challenge is that a singlethreaded
process is still being used to distribute work to the threads that actually implement redo...
...In the context of this three-replica configuration ...
There are challenges related to AG log redo. As expected, the AG secondary’s % Processor Time is lower, here
only 7%. The secondary is responsible merely for applying log traffic, hardened on its replica database log, to the
database data files. However, the explanation for the secondary’s 17K Transactions/sec—a fraction of the
primary’s 71K transaction rate—is because of internal constraints: the SQL Server 2016 RTM log redo cannot
restore log traffic as quickly as the data is received from the primary. Specifically, the value for secondary’s
Redone Bytes/sec is only 51 MB/sec. As stated previously, the secondary’s Bytes Received from
Replica/sec is 213 MB/sec. The delta between log traffic received (213 MB/sec) and log data redone (51
MB/sec) is 162 MB/sec. This delta is reflected in the secondary’s Recovery Queue average value of 68 million log
records, as well as the growth highlighted in the graphic below...
...the DB STARTUP processes waiting for CPU cycles in order to provide work to idle redo
threads.
The SQL Server product team is working to remediate the AG log redo bottleneck...

Т.е. заявленная в SQL Server 2016 многопоточность AlwaysOn - не совсем многопоточность.
На каждую БД есть один процесс DB STARTUP который распределяет нагрузку до 16 потоков PARALLEL_REDO на одну БД.
И этот процесс DB STARTUP является bottleneck.

Большое отставание на secondary нодах для нас неприемлемо.
Что можно попробовать сделать чтобы ускорить репликацию?
Какие есть workaround кроме разделения БД на несколько?
10 апр 18, 09:24    [21325245]     Ответить | Цитировать Сообщить модератору
 Re: Ограничение скорости репликации AlwaysOn порядка 50МБ/сек?  [new]
Александр Гладченко
Member

Откуда:
Сообщений: 10713
Блог
Важно не просто разделить базу, а снизить транзакционную нагрузку - она влияет на очереди REDO.
В 2016 сделали очень многое, что бы добавить параллельную обработку очереди REDO - так что это может сильно помочь и может не понадобиться что-то менять. Кстати, там в CU5 пофиксили баги производительности. Помогает размещение журналов на обоих "концах" на SSD. Постарайтесь отказаться от длинных транзакций и аккуратно планировать операции перестроения индексов и процессинга - следите во время их исполнения за очередью. Обязательно позаботьтесь, что бы у журналов был запас свободного места - они же у вас "пухнут"?
10 апр 18, 15:42    [21326968]     Ответить | Цитировать Сообщить модератору
 Re: Ограничение скорости репликации AlwaysOn порядка 50МБ/сек?  [new]
George N
Member

Откуда: Москва
Сообщений: 97
Александр, привет! Это Некошнов.
Не можем победить эту штуку никак.
У нас железо топовое по всем компонентам (1TB RAM, 160 Core CPU, RAD10 из 6 SDD Enterprise-класса под данные и такой же под логи, 40 Gbps сеть). Это железо простаивает, нагрузки крохотные. Нет никаких проблем с размерами логов или производительностью дисков. Они могут пережевать в 100 раз большую нагрузку (на синтетических тестах легко гонялись 6GB/sec).
Тем не менее, 55 MB/sec на репликацию - это приговор.
Единственное, что мы придумали - это разнести таблицы по кускам на разные бд, т.к. лимит -- 55 МБ/сек на каждую бд. Затем объединить все это с помощью federated views. Еще не тестировали, но, даже если это поможет, то будут проблемы с согласованностью бэкапов.
Конечно, проверим SQL2017, но нигде не видели упоминания, что именно эта проблема там исправляется.

Мы не можем сократить размеры транзакций и т.п., весь вопрос в том, как обойти этот лимит по скорости репликации.

Собственно, есть ли идеи, как это сделать?
11 апр 18, 13:45    [21329461]     Ответить | Цитировать Сообщить модератору
 Re: Ограничение скорости репликации AlwaysOn порядка 50МБ/сек?  [new]
sti
Member

Откуда:
Сообщений: 769
Только предстоят теже пляски. Как идея - может Resumable online index rebuild поможет?
11 апр 18, 13:59    [21329499]     Ответить | Цитировать Сообщить модератору
 Re: Ограничение скорости репликации AlwaysOn порядка 50МБ/сек?  [new]
Дедушка
Member

Откуда: Город трёх революций
Сообщений: 5112
George N
Собственно, есть ли идеи, как это сделать?
имхо, при таком энвайременте и, насколько я понимаю, критичности вопроса, отчего не спросить у MS?
11 апр 18, 14:02    [21329514]     Ответить | Цитировать Сообщить модератору
 Re: Ограничение скорости репликации AlwaysOn порядка 50МБ/сек?  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36697
George N,

Привет. Не смог MS пока в нормальный AlwaysOn. За три года на 2012 мы всякого тут навидались, вот буквально сегодня сделал таки failoverна ноду с 2016 сервером...

Если по сабжу, придется подстраиваться:
1. Базы попилить должно помочь до какого-то момента.
2. Все тяжелые операции придется делать в lazy режиме. Т.е., к примеру, не сразу все записи в таблице одним стейтментом в N-дцать потоков апдейтить, а по чуть-чуть, в цикле, а между итерациями проверять, не выросла ли очередь на redo.
3. С индексами особая попаболь: если есть возможность, пилить на секции и ребилдить посекционно (в 2016 уже можно онлайн). Создание индекса -- особая печаль: или извращаться с resource-гувернером, зарезая iops, чтобы очередь не росла, либо щупать rusumable-операции в 2017.

Ну и придется завести вот такой джоб все равно:

К сообщению приложен файл. Размер - 12Kb
11 апр 18, 14:13    [21329564]     Ответить | Цитировать Сообщить модератору
 Re: Ограничение скорости репликации AlwaysOn порядка 50МБ/сек?  [new]
George N
Member

Откуда: Москва
Сообщений: 97
Спасибо, будем пробовать resumable операции на 2017. Governor тоже подстроим, чтоб лаги по реплике снизить.
11 апр 18, 15:05    [21329881]     Ответить | Цитировать Сообщить модератору
 Re: Ограничение скорости репликации AlwaysOn порядка 50МБ/сек?  [new]
George N
Member

Откуда: Москва
Сообщений: 97
Гавриленко Сергей Алексеевич, Привет :) !
11 апр 18, 15:25    [21330013]     Ответить | Цитировать Сообщить модератору
 Re: Ограничение скорости репликации AlwaysOn порядка 50МБ/сек?  [new]
Andy_OLAP
Member

Откуда: я знаю, что Хапоэль Беэр-Шева - чемпион
Сообщений: 3151
and.dba

Вот здесь вот (http://www.sqlsaturday.com/SessionDownload.aspx?suid=12181) пишут:
SQL Server 2012 single threaded redo - ~45MB/sec
SQL Server 2016 multi-threaded redo - ~600MB/sec
Хотя непонятно что именно значат эти цифры и откуда их взяли

Очень непонятная цифра для 2012-го. Шон Галларди таки себя пяткой в грудь бил и говорил, что в 2012-м можно разогнать до 200 Мбайт/сек на сетке 10Gbit и на SSD Storage после того, как они в CU1 для 2012 SP2 исправили выставление фиксированного "TCP window size" для клиентских соединений.
11 апр 18, 15:27    [21330032]     Ответить | Цитировать Сообщить модератору
 Re: Ограничение скорости репликации AlwaysOn порядка 50МБ/сек?  [new]
Andy_OLAP
Member

Откуда: я знаю, что Хапоэль Беэр-Шева - чемпион
Сообщений: 3151
George N,

Шон сейчас как-то неактивен, потыкайте палкой Райна Адамса, который в прошлом году в Редмонд пришел и уже успел MVP получить по MSSQL, они вместе пилят AlwaysOn, если я ничего не путаю.
11 апр 18, 15:44    [21330157]     Ответить | Цитировать Сообщить модератору
 Re: Ограничение скорости репликации AlwaysOn порядка 50МБ/сек?  [new]
Yasha123
Member

Откуда:
Сообщений: 1833
Andy_OLAP
Шон сейчас как-то неактивен

на этот раз дарагуля как-то плохо в интернете порылся.
последний ответ Gallardy 15 часов назад:
answer
11 апр 18, 15:51    [21330217]     Ответить | Цитировать Сообщить модератору
 Re: Ограничение скорости репликации AlwaysOn порядка 50МБ/сек?  [new]
Andy_OLAP
Member

Откуда: я знаю, что Хапоэль Беэр-Шева - чемпион
Сообщений: 3151
Yasha123,

Аня, поскольку мы люди разного пола, возраста, происхождения и социального статуса - то и понятие "неактивен" воспринимаем по-разному. При всем моем неуважении к Вам лично я таки сделаю Вам пояснение - неактивность я воспринимаю как пониженную активность в социальных сетях и прочих коммуникационных средах.
11 апр 18, 16:53    [21330480]     Ответить | Цитировать Сообщить модератору
 Re: Ограничение скорости репликации AlwaysOn порядка 50МБ/сек?  [new]
Andy_OLAP
Member

Откуда: я знаю, что Хапоэль Беэр-Шева - чемпион
Сообщений: 3151
and.dba,

Кстати, можете еще Боба потыкать, он умный, графики красивые рисует, вот пусть он и ответит, как же так и кто виноват.
11 апр 18, 17:18    [21330603]     Ответить | Цитировать Сообщить модератору
 Re: Ограничение скорости репликации AlwaysOn порядка 50МБ/сек?  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6794
Andy_OLAP,
балабол,
какой смысл ваших комментариев если 99% из них вы сообщаете: "жалуйтесь в профсоюз"? Секретарь профсоюза?
11 апр 18, 18:25    [21330835]     Ответить | Цитировать Сообщить модератору
 Re: Ограничение скорости репликации AlwaysOn порядка 50МБ/сек?  [new]
Alexander Ryndin
Member

Откуда:
Сообщений: 4910
Блог
Да уж. Грех нам жаловаться, когда Data Guard (на Oracle аналог Always On) начинает подтормаживать при нагрузке на транзакционный журнал более 300 Мб/секунду :)
Ну, кстати, инженеры из Kaspersky года 3-4 назад жаловался, что у них Always On не справляется. Неужели за это время не порешали?
12 апр 18, 03:37    [21331670]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить