Uso de memoria de Windows 2012 Core Extreme en el servicio SVCHOST / Workstation

9

Tenemos aproximadamente 200 servidores, Hyper V, File Cluster e IIS, que están experimentando el mismo problema, un evento ocurre en el servidor a través del uso normal que maximiza o casi maximiza la RAM en el servidor. Una vez que esto sucede, el servicio SVCHOST / Workstation, específicamente (eliminado al aislar el servicio Workstation a su propio SVCHOST) deja de liberar identificadores / subprocesos y la memoria utilizada por ese servicio nunca se libera. Tenemos, en algunos casos extremos, servicios de estaciones de trabajo que utilizan hasta 40 GB de RAM en un servidor de 255 GB. También encontrar más de 40 millones de mangos en algunos casos.

Al reiniciar, el problema, por supuesto, desaparece y no vuelve a aparecer hasta que se haya utilizado toda la memoria, por ejemplo, por el proceso W3 o las máquinas virtuales HyperV, después de eso, el servicio de la estación de trabajo comienza a tomar toda la RAM. El proceso es muy lento y puede llevar semanas / meses dependiendo de la cantidad de RAM en un servidor.

Tanto nuestros servidores Hyper V como los servidores IIS acceden a recursos compartidos para archivos de trabajo, estos recursos compartidos están en almacenamiento SSD, por lo que tienen un gran rendimiento. Hemos instalado todos los parches actuales, pero no nos hemos movido a R2, ya que tenemos muchas herramientas en el lugar que harán de esto un paso significativo y no podemos encontrar ninguna indicación clara de que esto se solucionará en R2.

Hemos ejecutado ProcMon y otras herramientas, pero en los servidores más problemáticos esas herramientas ni siquiera se ejecutarán. En los demás, los resultados que proporcionan solo muestran que parece haber una pérdida de memoria en ese proceso.

¿Hay alguna manera de liberar la memoria de este proceso o evitar el error por completo? No queremos tener que reiniciar y no podemos reiniciar el proceso una vez que está en estado de error. El proceso se congela.

Estamos tratando de evitar reiniciar regularmente para 'solucionar' este problema, por lo que cualquier respuesta sería apreciada.

Craig
fuente
¿Cuál es tu pregunta?
Andrew Schulman
De hecho, lo hacemos, pero en el mejor de los casos es ambiguo, solo se abren miles / millones de hilos. En los sistemas más problemáticos, ni siquiera podemos ejecutar esas herramientas, simplemente bloquean el servidor.
Craig
Queremos encontrar una buena solución para resolver el problema que no sea reiniciar el cuadro. No podemos detener los servicios una vez que se inicia este problema.
Craig
¿Se ha instalado KB 2811660? ¿Estos sistemas ejecutan el administrador del servidor? support.microsoft.com/kb/2793908
Sí, este KB se instaló hace algún tiempo. Además, esta fuga es específica del servicio de estación de trabajo, que KB aplica al servicio WMI.
Craig

Respuestas:

1

Tuve un problema inquietantemente similar en el que svchost estaba destruyendo el rendimiento del servidor.

La solución: Resulta que tenía un registro de eventos completo. Lo borré y todo volvió a funcionar como si nada hubiera pasado.

(También recomiendo cambiar el tamaño del registro de eventos del predeterminado, ver más abajo)

Para establecer el tamaño máximo de registro mediante la interfaz de Windows
: inicie el Visor de eventos.
- En el árbol de la consola, navegue y seleccione el registro de eventos que desea administrar.
- En el menú Acción, haga clic en Propiedades.
- En Tamaño máximo de registro (KB), use el control giratorio para establecer el valor que desee y haga clic en Aceptar.

Suena exactamente como lo que está sucediendo aquí, pero terminó siendo una solución realmente fácil. Un reinicio resolvería temporalmente el problema, pero tan pronto como algo intentara escribir en el registro, todo se iría de las manos y seguiría consumiendo recursos.

¡Espero que esto ayude!

Aelof
fuente
-1
>Is there a way we can free up the memory from this process ?

No hay forma de liberar externamente (correctamente) la memoria asignada o manejar recursos sin matar la aplicación ofensiva.

>or avoid the bug all together? 

Está experimentando una pérdida de memoria y recursos. La única forma de resolver el problema es encontrar la fuga y evitar su desencadenante (si es posible) o solucionar la fuga a nivel del código fuente; En el último caso, necesita la ayuda de Microsoft para producir el parche, pero parece que esperan que les diga "exactamente" dónde está realmente el problema.

Puede intentar encontrar al culpable señalando la pérdida de memoria / recursos utilizando, por ejemplo, MS Application Verifier

Palmadita
fuente
El desencadenante son los archivos compartidos, que no podemos evitar.
Craig
si no puede evitar el disparador, busque la fuga con "Application Verifier" y póngase en contacto con MS con esa información.
Pat
Las aplicaciones, como hay varias, son todas de Microsoft. Ya nos hemos puesto en contacto con ellos, estamos buscando una solución más rápida, ya que afirman que puede llevarles semanas / meses resolver esto.
Craig
Teniendo en cuenta que MS realmente no se apresurará a resolver este tipo de cosas en un sistema operativo no actual, no creo que encuentre una solución más rápida. Una cosa diferente es si les dice dónde se encuentra la fuga.
Pat
Tenemos un caso abierto y hemos estado trabajando con ellos durante un mes. La fuga está literalmente en el servicio de estación de trabajo.
Craig
-1

Crear RAM es fácil pero no hay solución.

Sugiero Sysinternals RAMMAP o VMMAP para una investigación más profunda. Con estas herramientas puedes ver mejor lo que sucede. muy a menudo es un problema de metarchivo.

Desde Server 2008, tenemos este problema con todos los servidores de Terminal Server que se están quedando sin memoria con un consumo de memoria increíble a lo largo del tiempo al iniciar aplicaciones desde el recurso compartido.

Nuestra solución consiste en alojar esas aplicaciones en un Terminal Server separado y eliminar el consumo de memoria con frecuencia.

Hacemos esto con una aplicación de línea de comando c ++ de diseño propio usando
SetProcessWorkingSetSize () con SeDebugPrivilege en todos los procesos

Se recomienda encarecidamente no hacer algo como esto;)

Magnus
fuente
¿Por qué downvote? Es exactamente lo que se pidió! No es un placer tratar de ayudar aquí ...
Magnus