Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
En este artículo se describen diferentes maneras de examinar las fugas de memoria o controlar las fugas para resolver los problemas de rendimiento de Instrumental de administración de Windows (WMI) y cómo recopilar información adicional.
Puede experimentar los siguientes escenarios o problemas:
- La máquina se ejecuta lentamente.
- Ejecutar comandos como
tasklist
o abrir msinfo32.exe o compmgmt.msc tarda mucho tiempo en responder o no muestra los resultados adecuados. - Las aplicaciones o clientes en función de WMI tienen problemas para capturar o mostrar información o, finalmente, producir un error.
- Las consultas WMI producen errores como WBEM_E_INVALID_CLASS o WBEM_E_NOT_FOUND.
- El servicio WMI (Winmgmt) no responde.
- La memoria total de la máquina alcanza el 100 %.
También observa que svchost.exe (hospedar el servicio Winmgmt) o uno de los procesos de WmiPrvse.exe consume memoria alta o tiene un recuento de controladores alto en el Administrador de tareas en un momento dado. Si el equipo o el servicio Winmgmt se reinician o el proceso de WmiPrvse.exe problemático finaliza manualmente, la situación de memoria alta se mitiga temporalmente. Sin embargo, el problema se repite después de algún tiempo.
Posibles causas de una pérdida de memoria o una pérdida de identificador
Si el servicio WMI o WmiPrvse.exe proceso consume memoria o identificadores y no disminuye o libera los identificadores a lo largo del tiempo, se considera una pérdida de memoria o una fuga de controlador respectivamente.
El motivo de una fuga varía en función de los escenarios, pero suele deberse a lo siguiente:
- Consultas WMI problemáticas, ineficaces o enormes realizadas por una aplicación o servicio.
- Frecuencia alta de consultas.
- Interferencia de productos que no son de Microsoft.
- Objeto asociado a la clase WMI que se está consultando.
Aunque la investigación de pérdidas de memoria o identificador requiere un análisis detallado de consultas y volcados de depuración del servicio WMI o WmiPrvse.exe proceso, los pasos de solución de problemas iniciales pueden ayudar a reducir o resolver el problema.
Este es el ciclo de vida de realizar una consulta WMI:
- El cliente envía la consulta.
- El servicio WMI almacena la consulta como una tarea en su memoria denominada "memoria del búfer de árbitro".
- El servicio WMI invoca al proveedor WMI adecuado para ejecutar la consulta.
- El proveedor WMI devuelve los resultados de la consulta al servicio WMI y almacena los resultados en el búfer del árbitro.
- El cliente recupera los resultados de la consulta.
- La consulta y los resultados se desasignan del búfer del árbitro.
Si se produce una pérdida o memoria del servicio WMI, el búfer del árbitro puede rellenarse con demasiadas tareas o resultados de consulta, dejando sin más espacio para otras consultas.
- Si usa una versión del sistema operativo (SO) anterior a Windows Server 2016, el servicio WMI se ejecuta en el contenedor de svchost.exe compartido junto con otros servicios.
- Si el contenedor de svchost.exe está filtrando memoria o identificadores, primero debe determinar si esta pérdida se debe al servicio WMI o a cualquier otro servicio del contenedor de svchost.exe .
Para determinar esto, siga estos pasos:
- Aísle el servicio WMI a su propio contenedor svchost.exe con el
SC Config WINMGMT Type= Own
comando . - Reinicie el servicio Winmgmt.
- El
tasklist /svc
comando mostrará una lista de todos los procesos y servicios en ejecución hospedados en cada contenedor de svchost.exe . Si el comando funciona correctamente, debería ver que el servicio Winmgmt se ejecuta en un contenedor de svchost.exe aislado independiente. - Siga supervisando su memoria o controle el uso. Si continúa aumentando con el tiempo y no disminuye en absoluto, significa que el servicio Winmgmt es el que pierde memoria o identificadores. Si no es así, puede ver otro contenedor de svchost.exe que hospeda otra memoria o identificadores de pérdida de servicio.
- Para revertir los cambios, ejecute el
SC Config WINMGMT Type= Share
comando .
Los objetos de tarea relacionados con consultas no se liberan correctamente
La pérdida suele deberse a un comportamiento problemático del cliente o a un problema de conectividad, lo que impide que los objetos de tarea relacionados con las consultas se liberen correctamente.
Para determinar si un cliente problemático está implicado, debe comprender el patrón de pérdida y revisar el Administrador de tareas para ver si la memoria aumenta en un momento específico o durante una acción específica de cualquier aplicación. Por ejemplo, el consumo de memoria del servicio WMI aumenta cada vez que se instalan las actualizaciones de Windows.
Para supervisar el uso de memoria o controlar el recuento de cualquier proceso (el servicio WMI o el proceso de WmiPrvse.exe) mediante Monitor de rendimiento (Perfmon), siga estos pasos:
Tenga en cuenta el identificador de proceso (PID) de svchost.exe que contiene el servicio Winmgmt o WmiPrvse.exe proceso que está filtrando memoria o identificadores.
Escriba Perfmon en la ventana Ejecutar para abrir Monitor de rendimiento.
Seleccione Monitor de rendimiento en el panel izquierdo y, a continuación, seleccione el signo más (+) en el panel derecho para abrir la ventana Agregar contadores.
Expanda Proceso y seleccione Id. Proceso. Seleccione todas las instancias de WmiPrvse# y svchost# y, a continuación, seleccione Agregar>aceptar.
Para cada elemento de la lista, verá que Last, Average y Minimum tienen el mismo valor, que es el PID de ese proceso.
Recorra todos los elementos de la lista y busque el PID del servicio Winmgmt o WmiPrvse.exe proceso que está filtrando memoria o identificadores. A continuación, anote la instancia exacta de svchost# o WmiPrvse# .
Quite todos los elementos de la lista.
Seleccione Agregar contadores de nuevo y, en Proceso, seleccione Recuento de controladores, Bytes privados, Recuento de subprocesos y Conjunto de trabajo.
Seleccione la instancia correcta de svchost# o WmiPrvse# y seleccione Agregar. Esto mostrará una representación gráfica de los recursos consumidos por los procesos seleccionados.
Concluir si la memoria o el recuento de identificadores aumenta a intervalos de tiempo específicos o horas específicas del día o con cualquier acción. Una vez que comprenda el patrón de pérdida, analice las consultas entrantes en torno al tiempo del aumento en la memoria o los identificadores.
Busque consultas enormes, frecuentes o que permanezcan demasiado largas en la tarea.
Nota
Revisar las consultas entrantes es determinar uno o varios procesos de cliente que podrían estar realizando consultas problemáticas o comportarse de forma anómala.
Una vez que tenga un cliente sospechoso, puede probarlo desinstalando o deshabilitando temporalmente y reiniciando el servicio WMI.
Si no se produce ninguna pérdida de memoria, el proceso de cliente identificado es la causa del problema.
Repositorio sobredimensionado
Revise el tamaño del repositorio WMI, que se almacena en C:\Windows\System32\wbem\Repository. Comprenda o determine el tamaño del repositorio:
- El tamaño del repositorio depende de varios factores, como los recursos y la carga en la máquina, los servicios y aplicaciones activos instalados en la máquina y el entorno (por ejemplo, si pertenece a un clúster o a SQL Server).
- Para un sistema operativo del servidor, un tamaño de repositorio correcto puede ser de unos cientos de MB a 1,5 GB. Para un sistema operativo cliente, el tamaño puede ser de unos cientos de MB. El repositorio no necesariamente permanece a un tamaño específico y no hay ningún límite escrito.
- Un tamaño enorme (más de 1 GB) normalmente se considera sospechoso solo si la máquina está experimentando los problemas o síntomas descritos al principio de este artículo.
- El tamaño del repositorio es anormalmente grande o crece con el tiempo. En este caso, es probable que el repositorio se sobredimensione.
Un repositorio sobredimensionado debe examinarse mediante herramientas especializadas para determinar su causa exacta. Puede abrir un caso de soporte técnico de Microsoft con los datos capturados.
Sin embargo, en la mayoría de los casos, un repositorio WMI sobredimensionado se debe al registro o supervisión del conjunto resultante de directivas (RSoP) o aplicaciones de supervisión, como Microsoft System Center Configuration Manager (SCCM).
Para ver los problemas de registro de RSoP, consulte Inicio de sesión inesperado lento causado por un repositorio WMI grande en Windows o Windows Server.
Incluso después de aplicar la solución, el repositorio WMI debe restablecerse para reducir su tamaño. No se recomienda restablecer el repositorio WMI sin instrucciones anteriores de los profesionales de soporte técnico de Microsoft.
Si los pasos anteriores no pueden resolver el problema, debe recopilar los seguimientos y volcados de memoria y enviarlos a profesionales de soporte técnico de Microsoft para una investigación más profunda, como se mencionó en la sección Recopilación de datos.
El proceso de WmiPrvse.exe está filtrando identificadores o memoria
Si el proceso de WmiPrvse.exe está filtrando identificadores o memoria, es probable que sea uno de los siguientes casos:
- Una aplicación cliente realiza consultas anómalas, ineficaces o grandes.
- El proceso de WmiPrvse.exe no libera los recursos según lo previsto mientras procesa una consulta WMI, lo que conduce a una pérdida de memoria y detiene el proceso de WmiPrvse.exe .
- La escala de la máquina o la configuración del entorno es grande.
Para estos casos, consulte "Guía de escenarios: Solución de problemas de WmiPrvse.exe cuota que supera los problemas o escenarios".
datos, recopilación
Para abrir un caso de soporte técnico para una investigación adicional, puede recopilar la información siguiendo los pasos mencionados en Recopilación de información mediante TSS para problemas de la experiencia del usuario o mediante la herramienta WMI-Collect en el equipo que ha experimentado recientemente el problema. Estos son los pasos que debe realizar:
Descargue WMI-Collect.zip y extráigalo en una carpeta, como C:\temp.
Desde un símbolo del sistema de PowerShell con privilegios elevados, ejecute el script WMI-Collect.ps1 desde la carpeta donde se guarda el script. Por ejemplo:
C:\temp\WMI-Collect.ps1 -Logs
Mantenga abierto el símbolo del sistema de PowerShell con el mensaje "Presione ENTRAR para detener la captura:".
El script crea una subcarpeta que contiene los resultados de todos los seguimientos y la información de diagnóstico. Comprima la carpeta. Después de crear un caso de soporte técnico, este archivo se puede cargar en el área de trabajo segura para su análisis.