На всех наших установках AlwaysOn, работающих под управлением Windows 2012 и SQL Server 2012 на виртуальных машинах и на голом железе, я обнаружил, что log_send_rate in
sys.dm_hadr_database_replica_states
последовательно возвращает неправильные значения.
Например (для синхронного режима)
sys.dm_hadr_database_replica_states.log_send_rate (ave = 36,571 (кбит / с указано в болях))
Perfmon - SQLServer: реплика доступности - количество байтов, отправленных в реплику / сек (макс. = 486 000 000, среднее значение = 259 000 000)
Perfmon - SQLServer: Базы данных - количество очищенных байтов журнала / сек (макс. = 653 044 000, среднее значение = 341 000 000)
Я не видел сообщений об этом, но, похоже, он работает неправильно. Правильное log_send_rate
значение полезно для мониторинга AlwaysOn.
Кто-нибудь еще испытывал это?
sys.dm_hadr_database_replica_stats
имели в виду , потому что DMV, который вы отметили, не содержитlog_send_rate
столбца. Также и DMV, который сообщает об этом, показывает КБ / сек. В этой статье TechNet по устранению неполадок отмечается сравнение этого значения со счетчикомLog Bytes Flushed/sec
производительности. Это то, на что вы ссылаетесь?Ответы:
Да, это было недавно исправлено в пакете обновления 2 (SP3), накопительное обновление 3. Вот статья базы знаний : http://support.microsoft.com/kb/3012182
«ИСПРАВЛЕНИЕ: столбец Log_Send_Rate в sys.dm_hadr_database_replica_states не может точно отражать скорость в SQL Server 2012»
источник
Причина, по которой
log_send_rate
(иredo_rate
) немного сложнее для понимания и «корреляции», особенно когда мы привыкли к передаче данных в непрерывном типе мышления, заключается в том, что эти две скорости рассчитываются в течение активного времени, а не всегда ,Другими словами, он
log_send_rate
будет корректироваться при отправке блоков журнала, но не отключится, когда будет тихо, и основная реплика ожидает отправки журнала. Точно так же, наоборот, на вторичных сredo_rate
.источник
Я рассматривал значения log_send_rate как часть устранения проблемы с задержкой, возникшей в одной из наших производственных сред.
Я предложил Microsoft, что их определение поля неверно, как упомянуто здесь ( http://technet.microsoft.com/en-us/library/ff877972(v=sql.110).aspx ). «Скорость, с которой записи журнала отправляются во вторичные базы данных, в килобайтах (КБ) / секунду».
Я думаю, что мое определение ниже лучше. Это ... «Скорость, с которой записи журнала удаляются из очереди отправки», а записи журнала могут быть удалены из этой очереди только тогда, когда они уже усилены на всех вторичных серверах, и это может произойти только тогда, когда они уже были отправлено и получено, независимо от того, сколько времени потребовалось, чтобы эти записи пришли, и сколько времени понадобилось для их закаливания и сколько времени потребовалось, чтобы вторичное устройство отправило подтверждение обратно первичному.
Это совсем другое определение, даже если они выглядят одинаково. Данные могут быть удалены из локальной очереди памяти (log_send_queue) гораздо быстрее, чем они могут быть отправлены вторичному устройству в другом регионе, стране или центре обработки данных.
Nikos
@ Томас (я все еще слишком нуб, чтобы добавлять здесь комментарии, извинения. Если проще, я могу предоставить свою рабочую электронную почту, и мы можем обсудить в автономном режиме и обновлять здесь, когда достигнут консенсус?) Привет, Томас
К сожалению, хотя ваша точка зрения верна, это не главное. Да, это сложнее сопоставить по всем причинам, которые вы описали, но это не проблема, которую я пытаюсь выделить.
Дело в том, что поле «log_send_rate» в DMV фактически не является скоростью, с которой записи журналов отправляются репликам.
Точнее говоря, это скорость, с которой записи журналов удаляются из очереди отправки, ПОСЛЕ того, как они УЖЕ были отправлены на вторичный сервер, усилены на вторичном сервере и затем отправили подтверждение обратно на первичный сервер. Только тогда они могут быть удалены из основной очереди отправки.
Это совершенно иное значение, чем указано в ссылке, которую я включил в свой первый пост. Также гораздо легче увидеть расхождение, когда вы имеете дело с межрегиональными (например, из Лондона в Нью-Йорк) тарифами на отправку, а не с тарифами на отправку из и в местный центр обработки данных.
источник