Grupos de disponibilidad AlwaysOn log_send_rate

8

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_statesestá 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_ratevalor correcto es útil para monitorear AlwaysOn.

Alguien más ha experimentado esto?

Jonwolds
fuente
¿Ha considerado hacer un informe en connect.microsoft.com ?
Max Vernon
¿Cómo se configura AlwaysON en modo síncrono o asíncrono? ¿Hay alguna replicación involucrada?
Kin Shah
Quiso decir sys.dm_hadr_database_replica_stats, porque el DMV que anotó no contiene una log_send_ratecolumna. 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 rendimiento Log Bytes Flushed/sec, ¿es a este al que se refiere?
Gracias por los comentarios. He actualizado la pregunta para que sea más precisa. Planeo hacer un informe en connect, pero primero quería ver si alguien estuvo de acuerdo en que el número parece incorrecto.
jonwolds

Respuestas:

2

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"

Brent Ozar
fuente
0

La razón por la cual log_send_rate(y redo_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_ratese 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 con redo_rate.

Thomas Stringer
fuente
0

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.

captrench
fuente