Analisis de desempeño - Pssdiag (DiagScan)


Cuando trabaja en Microsoft como un asociado, usábamos una herramienta en la mayoría de los casos llamada Pssdiag la cual era un poco distinta que la versión pública. El pasado 12 de Enero del 2017 Microsoft liberó una nueva versión que trae las mismas opciones que la versión privada y algunas más, esta herramienta es llamada de tipo escopeta o sea captura casi todo lo posible para no dejar nada fuera y tener la visión más global, esto es especialmente útil cuando no sabemos dónde está el error.

La última versión fue anunciada en este blog post por Microsoft, y la pueden bajar de Github.

Una vez lo bajamos y lo descomprimimos ejecutamos.


De lo que podemos ver a primera vista es:

  • Nombre de maquina, aqui ponemos el nombre en caso de que sea remota en caso de ser una toma de datos local no debemos de poner ningun dato extra y simplemente usar el ".'".
  • Nombre de instancia, en caso de que nuestro servidor tenga mas de una instancia tomaría todas las instancias, en caso de querer una en específico escribir el nombre, si sólo tenemos una seleccionará esta única instancia.
  • Caracteristicas, de momento solo es posible elegir el motor, versiones anteriores permitían SSAS, pero por el momento no es posible.
  • Plataforma, la plataforma es básicamente de 32 o 64 bits, esto es para el motor
  • Versión, aquí podemos elegir la versión de SQL Server desde 2008 en adelante, ya que 2005 ha sido depreciado, tengan en cuenta que esto importa mucho debido a que no todos los contadores y características están disponibles para todas las versiones.
  • Escenarios, som templates ya creados que podemos usar y nos seleccionan ciertas caracteriticas pertenecientas a los contenedores que tenemos a la derecha.
    • Aqui no dirian mucho mas que yo recomiendo que se agrege en cualquier escenario "latching" y "memory", tanto en XEvents, Profiler, Perfmon, Custome Diagnostics
    • En Perfmon, en caso de que podamos agregaria mas tiempo a la captura y bajaria la captura de datos de 5 segundo a 1 segundo cuando quiero algo mucho mas especifico.


En el apartado de los contadores necesitmos un poco de experiencia para poder tomar las mejores deciciones, si veo un problema que tiene presion de memoria y veo problemas de disco posiblemente agregaria paging file para ver si estamos paginando, o ver si tenemos read ahead que este cubriendo un problema de presion de memoria.

Una vez tenemos seccionados los contadores que necesitamos salvaremos el programa y este crea un empaquetado.


Este lo necesitamos mover al servidor del cual tomaremos la muestra y extraerlo, preferentemente en una carpeta como C:\tempdb preferentemente una donde no exista concurrencia con el sistema operativo ni sean unidades (LUN) de base de datos para descartar o agrabar posibles problemas.

Recordemenos que pare iniciar esto necesitamos tener preferentemente sysadmin en la base de datos y local admin en el sistema operativo.

Una vez que tenemos esto ejecutamos el "pssdiag.cmd" desde un simbolo de sistema con permisos de administrador. (Nota: Aunque SQL Server 2016 ya no ocupa el framework 3.5 el pssdiag o diagscan sigue solicitando este) y hasta que presionemos ctrl+c se debera de parar la captura, normalmente lo recomendado es reproducir el problema en caso de ser reproducible unas 2 o 3 veces, en caso de que sea un problema de performance tomar unos 30 minutos o una toma continua y ciclica si es un problema random.


En el mismo folder se creara una subcarpeta output que usaremos para poder interpretar los resultados.

Cualquier duda o comentario sobre el uso de la herramienta porfavor no dude en comentarlo.

Comentarios