Ok, para cualquier persona interesada,
Resolvimos el problema en la pregunta hace un par de meses simplemente instalando unidades SSD conectadas directamente en cada uno de los 3 servidores, y moviendo datos de DB y archivos de registro desde SAN a esas unidades SSD
Aquí un resumen de lo que hice para investigar sobre este tema (usando las recomendaciones de todas las publicaciones en esta pregunta), antes de que decidiéramos instalar unidades SSD:
1) comenzó a recopilar contadores PerfMon para las siguientes unidades en los 3 servidores:
Disk F:
es un disco lógico basado en SAN, contiene archivos de datos MDF
Disk I:
es un disco lógico basado en SAN, contiene archivos de registro LDF
Disk T:
está directamente conectado SSD, dedicado exclusivamente a tempDB
La imagen a continuación muestra los valores promedio recopilados durante un período de 2 semanas.
Disk I: (LDF)
tiene un IO tan pequeño y la latencia es muy baja, por lo que el disco I: puede ignorarse
Puede ver que Disk T: (TempDB)
tiene un IO más grande en comparación con Disk F: (MDF)
, y tiene una latencia mucho mejor al mismo tiempo - 0 ms
Obviamente, algo está mal con el disco F: donde residen los archivos de datos, tiene una alta latencia y una cola de escritura de disco promedio, a pesar de la baja E / S
2) Latencia comprobada para bases de datos individuales utilizando la consulta de este sitio web
https://www.brentozar.com/blitz/slow-storage-reads-writes/
Pocas bases de datos activas en el servidor primario tenían una latencia de lectura de 150 a 250 ms y una latencia de escritura de 150 a 450 ms
. otra indicación de que algo está mal con SAN
3) No hubo tiempos específicos
Durante el cual aparecieron mensajes de "SQL Server ha encontrado incidentes ..."
No se ejecutaron ETL de mantenimiento o disco pesado cuando se registraron esos mensajes
4) Visor de eventos de Windows
No mostró ninguna otra entrada que sugiriera el problema, excepto que "SQL Server ha encontrado eventos ..."
5) Comenzó a verificar las 10 consultas principales
Desde sp_BlitzCache (cpu, lecturas, etc.), y omptimizando donde sea posible
No hay consultas pesadas súper IO que produzcan toneladas de datos e impacten mucho el almacenamiento, aunque la
indexación en bases de datos está bien, lo mantengo
6) No tenemos equipo de SAN
Solo tenemos 1 administrador del sistema que ayuda en ocasiones Ruta de
red a SAN: es de múltiples rutas, cada uno de los 3 servidores tiene 2 cables de red que conducen a los conmutadores y luego a SAN, y se supone que es de 1 Gigabyte / seg.
7) No hubo resultados de CrystalDiskMark
O cualquier otro resultado de prueba de referencia de cuando se configuraron los servidores, por lo que no sé cuáles deberían ser las velocidades , y no es posible comparar en este punto para ver cuáles son las velocidades actuales, ya que habría afectado la producción
8) Configurar la sesión de eventos extendidos en el evento de punto de control para la base de datos en cuestión
La sesión XE ayudó a descubrir que durante los mensajes "SQL Server ha encontrado eventos ...", el punto de control sucedió muy lento (hasta 90 segundos)
9) Registro de errores del servidor SQL
Entradas "Saturación" contenidas en "FlushCache"
Se supone que se muestran cuando el tiempo del punto de control para la base de datos dada excede la configuración del intervalo de recuperación
Los detalles mostraron que la cantidad de datos que el punto de control está tratando de eliminar es pequeña y está tardando mucho en completarse, y la velocidad general es de aproximadamente 0.25 MB / seg ... raro
10) Finalmente, esta imagen muestra la tabla de solución de problemas de almacenamiento:
Parece que simplemente tenemos un "Problema de hardware: - Trabaje con el administrador del sistema / proveedor de hardware para corregir cualquier configuración incorrecta de SAN, controladores antiguos, defectuosos, controladores, firmware, etc."
En otra pregunta "Punto de control lento ..." Punto de control lento y advertencias de E / S de 15 segundos en el almacenamiento flash
Sean tenía una lista muy buena de los elementos que deben verificarse a nivel de hardware y software para solucionar problemas
Nuestro administrador de sistemas no pudo verificar todas las cosas de la lista, por lo que simplemente elegimos lanzar un poco de hardware a este problema; no era costoso en absoluto
Resolución:
Pedimos unidades SSD de 1 TB y las instalamos directamente en los servidores
Dado que tenemos Grupos de disponibilidad, migramos archivos de datos de base de datos de SAN a SSD en réplicas secundarias, luego conmutamos por error y migramos archivos en la primaria anterior. Esto permitió un tiempo de inactividad total mínimo: menos de 1 minuto
Ahora cada servidor tiene una copia local de los datos de la base de datos, y se realizan copias de seguridad completas / diferenciadas / de registro en la SAN mencionada.
No más mensajes de "SQL Server ha encontrado ocurrencias ..." en los registros del Visor de sucesos de Windows y el rendimiento de las copias de seguridad, las verificaciones de integridad, reconstrucciones de índice, consultas, etc. ha aumentado significativamente
¿Cuánto rendimiento en términos de latencia de E / S ha mejorado desde que migramos los archivos DB a SSD?
Para evaluar el impacto, el rendimiento utilizado de Windows Performance Monitor registra 2 semanas antes de la migración y 4 semanas después de la migración:
También a continuación se muestra la comparación de estadísticas de latencia de nivel de base de datos (se utilizaron las estadísticas de archivos virtuales capturados de SQL Server antes y después de la migración)
Resumen
La migración de SAN a SSD locales conectados directamente valió la pena.
Tuvo un gran impacto en la latencia del almacenamiento y mejoró más del 90% en promedio (especialmente las operaciones de ESCRITURA), y ya no tenemos picos de 20-50 segundos en IO
Pasar a SSD local resolvió no solo los problemas de rendimiento de almacenamiento, sino también la seguridad de los datos que me preocupaban (si SAN falla, los 3 servidores pierden sus datos al mismo tiempo)