En todas nuestras configuraciones de AlwaysOn, que ejecutan Windows 2012 y SQL Server 2012 en máquinas virtuales y en hardware, descubro que log_send_rate
sys.dm_hadr_database_replica_states
está devolviendo constantemente valores incorrectos.
Por ejemplo (para modo síncrono)
sys.dm_hadr_database_replica_states.log_send_rate (ave = 36,571 (kb / s listado en bol))
Perfmon - SQLServer: Réplica de disponibilidad - Bytes enviados a réplica / seg (máx = 486,000,000, promedio = 259,000,000)
Perfmon - SQLServer: Bases de datos - Bytes de registro vaciados / seg (máx = 653,044,000, promedio = 341,000,000)
No he visto ninguna publicación sobre esto, pero parece que no funciona correctamente. Un log_send_rate
valor correcto es útil para monitorear AlwaysOn.
Alguien más ha experimentado esto?
sys.dm_hadr_database_replica_stats
, porque el DMV que anotó no contiene unalog_send_rate
columna. Además, el DMV que informa esto muestra KBs / seg. En este artículo de solución de problemas de TechNet se señala que compara ese valor con el contador de rendimientoLog Bytes Flushed/sec
, ¿es a este al que se refiere?Respuestas:
Sí, esto se solucionó recientemente en el Service Pack 2, Actualización acumulativa 3. Aquí está el artículo de KB: http://support.microsoft.com/kb/3012182
"REVISIÓN: la columna Log_Send_Rate en sys.dm_hadr_database_replica_states no puede reflejar la velocidad con precisión en SQL Server 2012"
fuente
La razón por la cual
log_send_rate
(yredo_rate
) es un poco complicado de comprender y "correlacionar", especialmente cuando estamos acostumbrados a la transferencia de datos en un tipo de pensamiento ininterrumpido, es que estas dos tasas se calculan durante los tiempos activos, no siempre .En otras palabras,
log_send_rate
se ajustará cuando se envíen bloques de registro, pero no disminuirá cuando esté en silencio y la réplica principal esté esperando el registro para enviar. Del mismo modo, lo mismo a la inversa en secundarias conredo_rate
.fuente
He estado mirando los valores de log_send_rate como parte de la resolución de un problema de latencia que tenemos en uno de nuestros entornos de producción.
Le he propuesto a Microsoft que su definición del campo sea incorrecta, como se menciona aquí ( http://technet.microsoft.com/en-us/library/ff877972(v=sql.110).aspx ). "Velocidad a la que se envían los registros a las bases de datos secundarias, en kilobytes (KB) / segundo".
Creo que mi definición a continuación es mejor. Es ... "La velocidad a la que se borran los registros de la cola de envío", y los registros de registro solo se pueden borrar de esta cola cuando ya se han endurecido en todos los secundarios, y eso solo puede suceder cuando ya se han eliminado enviados y recibidos, independientemente de cuánto tiempo tardaron en llegar esos registros, cuánto tiempo tardaron en endurecerse y cuánto tiempo le llevó a la secundaria enviar los acks de vuelta a la primaria.
Esa es una definición muy diferente, incluso si se ven cosméticamente iguales. Los datos se pueden eliminar de una cola local en la memoria (log_send_queue) mucho más rápido de lo que se pueden enviar a los secundarios en otra región, país o centro de datos.
Nikos
@Thomas (Todavía soy demasiado novato para agregar comentarios aquí, disculpas. Si es más fácil, puedo proporcionar mi correo electrónico de trabajo y podemos discutir fuera de línea, y actualizar aquí cuando se llega a un consenso?) Hola Thomas
Desafortunadamente, si bien su punto es correcto, no es el punto en juego. Sí, es más difícil de correlacionar por todas las razones que ha descrito, pero no es el problema que estoy tratando de resaltar.
El punto es que el campo "log_send_rate" en el DMV no es en realidad la velocidad a la que se envían los registros a las réplicas.
Más exactamente, es la velocidad a la que se eliminan los registros de la cola de envío, DESPUÉS de que YA hayan sido enviados a la secundaria, endurecidos en la secundaria y luego enviados un reconocimiento nuevamente a la primaria. Solo entonces pueden borrarse de la cola de envío principal.
Ese es un significado completamente diferente del que aparece en el enlace que incluí en mi primera publicación. También es mucho más fácil ver la discrepancia cuando se trata de tarifas de envío interregionales (como Londres a Nueva York), en lugar de las tarifas de envío desde y hacia el centro de datos local.
fuente