Recientemente tuvimos un problema en nuestro servidor en vivo que hizo que nuestra aplicación web dejara de responder. Todo lo que recibimos fueron errores 503 hasta que reiniciamos el servidor, entonces estuvo bien. Finalmente lo rastreé hasta el httperr.log y encontré muchos errores 1_Connections_Refused.
La investigación adicional parecía indicar que habíamos alcanzado el límite de grupo no paginado. Desde entonces, hemos estado monitoreando la memoria del grupo no paginado usando Poolmon.exe y creemos que hemos identificado la etiqueta que está causando el problema.
Tag Type Allocs Frees Diff Bytes Per Alloc
Even Nonp 51,231,806 50,633,533 684,922 32,878,688 48
Si usamos poolmon.exe / g, muestra el controlador mapeado como [<desconocido> objetos de evento].
Esto no ayuda en absoluto. Mi equipo ha dedicado un tiempo considerable a investigar este problema y no ha podido encontrar un proceso para reducirlo a una aplicación o servicio específico. Tengo la sensación de que la mayoría de las personas parecen resolver el problema eliminando procesos en la máquina hasta que ven el restablecimiento de la memoria no paginada. Esto no es exactamente lo que quiere ver cuando trabaja en una máquina de producción.
Si abro el Administrador de tareas y veo la lista de procesos. Veo MailService.exe con un valor de NP Pool de 105K, esto es 36K más alto que el valor del proceso que aparece en segundo lugar. Como hemos tenido algunos problemas con nuestro servidor de correo en el pasado (que pueden o no estar relacionados con este problema), mi intuición es que esto está causando el problema.
Sin embargo, antes de comenzar a reiniciar los servicios, me gustaría tener un poco más de certeza que solo un "presentimiento".
También he intentado usar poolmon.exe / c pero esto siempre devuelve el error:
unable to load msvcr70.dll/msvcp70.dll
y no crea localtag.txt. Mi colega tuvo que descargar pooltag.txt de Internet porque no podemos averiguar dónde se encuentra. No tenemos instalado el depurador win o el DDK win (que puedo ver). Tal vez el error anterior se da porque no tenemos ninguno de estos instalados, pero no lo sé.
Finalmente probé:
C:\windows\system32\driver\findstr /m /l Even *.sys
Esto devolvió una lista bastante considerable de archivos .sys y nuevamente no fue de ninguna ayuda con el problema en cuestión.
Entonces mi pregunta es esta: ¿Hay alguna otra forma de reducir la causa de esta pérdida de memoria?
ACTUALIZAR:
Como se sugiere a continuación, he estado registrando los Bytes de bloque no paginado durante el último día más o menos para ver si algún proceso está en tendencia. En su mayor parte, todos los procesos parecen ser bastante estáticos en su uso. Dos de ellos parecen haber aumentado ligeramente. Continuaré monitoreando esto durante los próximos días.
También olvidé mencionar antes que ninguno de los procesos parece estar usando un número excesivo de identificadores tampoco.
ACTUALIZACIÓN 2:
He estado monitoreando esto durante las últimas semanas. Tanto el conjunto de bytes no paginado para procesos individuales como el conjunto de bytes no paginado totales se han mantenido relativamente estables durante ese tiempo. Durante este tiempo, Windows se actualizó y el servidor se reinició, así que me pregunto si eso ha resuelto el problema. Definitivamente no estoy viendo el crecimiento constante en el conjunto de bytes no paginado ahora que estaba antes de esto.