Pregunta

Sé que este es probablemente el canónico "Depende ..." pregunta, pero agradecería cualquier sugerencia sobre dónde comenzar a buscar.

Tengo una aplicación cliente / servidor que habla por Ethernet. En una computadora ejecuto el servidor y un cliente y en otra solo el cliente. Uno ejecuta Vista y otro ejecuta XP. Después de un tiempo de funcionamiento de aproximadamente 3 semanas, toda la computadora se congela y nada funciona, ni el mouse, ni el teclado, nada, solo apaga. Cada diez segundos, el servidor envía un mensaje de ping para ver si los clientes están vivos, aparte de eso, solo unos pocos mensajes pequeños van y vienen todos los días.

Estoy tratando de averiguar si soy yo quien lo está causando o algo más. Comencé una sesión y, después de unos días, pensé en buscar incrementos extraños en el uso de la memoria, pero más allá de eso tengo muy pocas ideas.

¿Fue útil?

Solución

Algunas reflexiones a tener en cuenta:

  1. Sabes que la computadora no responde, pero eso no significa que esté colgada. ¿Responde a un ping?
  2. ¿Quizás la luz de actividad del disco está encendida todo el tiempo?
  3. Dices "no hay teclado" - ¿Quieres decir que no hay mayúsculas ni luces de bloqueo numérico?
  4. Aunque la aplicación .NET puede ser la única que está ejecutando en ese momento, eso no implica que sea la causa del problema. Algún trabajo de fondo podría estar haciéndolo.

Por ejemplo, noto que la copia de seguridad de Retrospect, cuando está creando una instantánea, congela todo el sistema durante 10-15 minutos. Quiero decir, no hay bloqueo de mayúsculas, el reloj en la barra de tareas no se actualiza, no CTRL-ALT-DEL, no puede escribir en una " Respuesta " cuadro de texto en SO, nada. No tenía nada que ver con lo que estaba haciendo en ese momento, que era responder una pregunta sobre SO.

Después de que regresó, SO preguntó si era humano. Mis sentimientos estaban heridos. ;-)

Otros consejos

Puede adjuntar un depurador de kernel al sistema operativo. De esa manera, debería poder inspeccionar el estado del sistema operativo y su proceso, incluso si el sistema operativo no responde por completo. (Desafortunadamente, es mucho más difícil que simplemente presionar "romper" en VS. Sugiero leer John Robbin's "Depuración de aplicaciones para .NET y Windows" antes de intentarlo).

También podría intentar crear volcados de memoria de su aplicación a intervalos regulares. Sin embargo, es posible que tenga que hacer un pequeño guión para eso. (por lo general, crearía un volcado con una pulsación de tecla, utilizando una herramienta como userdump o adplus, pero si el sistema operativo no responde a las pulsaciones de teclas, eso no funcionará). De esa manera, sabrá en qué estado se encuentra su proceso durante o poco antes de colgar. Esta página: http://blogs.msdn.com/debuggingtoolbox/default.aspx es un buen punto de partida para crear secuencias de comandos WinDbg. (¡Si no sabe qué hacer con un volcado de memoria, le sugiero nuevamente el excelente libro de John Robbin sobre depuración!)

Aparte de eso, solo puedo pensar en trucos de depuración estándar: ¿el problema ocurre en cada PC? ¿Sucede si no hay solicitudes de clientes? ¿Ocurre antes si hay más solicitudes de clientes? ¿Ocurre antes si hay menos memoria física disponible? Intente eliminar partes de su aplicación (tal vez en un servidor separado para la prueba) y vea si el problema persiste, y así sucesivamente. Intente ejecutarlo en una máquina virtual para que pueda ver si usa la CPU, el disco duro o la red durante esos "bloqueos".

Esta no será la respuesta , pero le aconsejo que comience revisando los registros de eventos de su sistema operativo y ejecute un perfmon para realizar un seguimiento de la memoria, el uso de la CPU, etc.

¿Qué computadora se congela, el servidor o el cliente? ¿Y qué sistemas operativos están ejecutando respectivamente?

Como señaló Daniel L, los bucles de sondeo ajustados realmente pueden matar la CPU. Si puede, cambie su código para usar controladores de eventos, es una solución mucho más sólida.

Finalmente, ¿está seguro de que no hay un problema de hardware en la computadora de congelación?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top