• Sign in
 
  •  
  • MSDN Blogs
  • Microsoft Blog Images
  • More ...
Common Tasks
  • Blog Home
  • Email Blog Author
  • About
  • RSS for comments
  • RSS for posts
Blog - News
Search
Recent Posts
  • Digest Authentication in System.Net classes don't fully comply with RFC2617

    Posted 2 months ago
    by Daniel Mossberg
      0 Comments
  • Corrupción de las claves RSA y la importancia de hacer backup

    Posted 11 months ago
    by Daniel Mossberg
      0 Comments
  • Modelos de programación en ASP.NET: Web Forms, MVC y Web Pages

    Posted over 1 year ago
    by Daniel Mossberg
      4 Comments
  • HttpException: An error occurred while attempting to impersonate

    Posted over 3 years ago
    by Daniel Mossberg
      2 Comments
  • Problemas al subir ficheros a una aplicación ASP.NET

    Posted over 3 years ago
    by Daniel Mossberg
      0 Comments
Tags
  • ASP
  • ASP.NET
  • Common Language Runtime (CLR)
  • Debugging
  • Ejemplos de Código
  • Failed Request Tracing
  • Herramientas
  • IIS 6.0
  • IIS 7.0
  • Kerberos
  • Log Parser
  • Pages
  • Seguridad
  • Silverlight
  • SSL/TLS
Archives
Archives
  • February 2013 (1)
  • May 2012 (2)
  • November 2010 (1)
  • August 2010 (1)
  • April 2010 (1)
  • March 2010 (2)
  • February 2010 (2)
  • January 2010 (2)
  • December 2009 (5)
  • October 2009 (1)
  • September 2009 (3)
  • August 2009 (1)
  • July 2009 (2)
  • May 2009 (2)
  • April 2009 (4)
  • February 2009 (1)
  • January 2009 (1)
  • December 2008 (1)
Web Developer Support Blogs
  • If broken it is, fix it you should

  • Notes from a dark corner

  • Never doubt thy debugger

  • Speaking of which...

  • Desarrollo Web

Server and Tools Blogs
  • Windows 8 app developer blog

  • The Visual Studio Blog

  • .NET Web Development and Tools Blog

  • .NET Framework Blog

  • The Windows Phone Developer Blog

  • ScottGu's Blog

  • Scott Hanselman's Computer Zen

Cuándo y cómo capturar volcados de memoria en modo Hang

Cuándo y cómo capturar volcados de memoria en modo Hang

Daniel Mossberg
14 Dec 2009 7:42 AM
  • Comments 0

En el contexto de este post, se entiende por hang (yo lo traduciría al castellano como contención) una situación en la que una aplicación responde mucho más despacio de lo normal o deja de responder por completo. Una contención puede ser temporal (pasado un rato la aplicación vuelve a funcionar correctamente) o permanente (lo que se conoce como deadlock), y puede ir asociada a un consumo de CPU elevado o un consumo bajo (o incluso nulo).

 

Los volcados de memoria en modo hang muestran el estado de la memoria de un proceso en un momento determinado en el tiempo. Por lo tanto, para que la información contenida en el volcado tenga algún valor es imprescindible capturar el volcado en el momento adecuado. Revisemos los distintos escenarios en los que necesitaremos capturar volcados de memoria en modo hang:

 

Contención y consumo de CPU bajo

Habitualmente, cuando la aplicación no responde ni consume CPU es que está esperando a algo que se ejecuta en un proceso distinto o incluso en un servidor distinto. Por ejemplo, puede estar esperando a obtener respuesta de una llamada RPC, a obtener respuesta de una llamada por sockets, o a que se libere una sección crítica. En ocasiones, como ya adelantaba antes, estas contenciones pueden ser permanentes si esa respuesta nunca llega o la sección crítica nunca se libera (siguiendo con el ejemplo anterior).

 

Para este tipo de problemas es interesante capturar tres volcados con un intervalo de un minuto entre cada uno (aproximadamente), y cuando sea posible capturar volcados de todos los procesos implicados en la aplicación cuando se esté reproduciendo el problema.

 

Esto nos permitirá ver cómo evoluciona el proceso con el tiempo (por eso cogemos varios volcados), y además obtendremos datos de todos los procesos implicados dado que a priori no podemos saber en qué proceso se produce la contención.

 

Las dos herramientas más comunes para capturar estos volcados son Debug Diagnostics y Adplus. En los siguientes posts encontraréis la información detallada sobre cómo generar los volcados:

 

·         Cómo capturar volcados de hang con Debug Diagnostics Tool

·         Cómo capturar volcados de hang con Adplus (próximamente)

 

Contención y consumo de CPU elevado

Para este tipo de problemas, al contrario que la categoría anterior, es más evidente cual es el proceso que nos interesa analizar (el que consume CPU). Por lo tanto, la forma de capturar los volcados es ligeramente distinta.

 

Para este tipo de problemas es interesante capturar tres volcados con un intervalo de un minuto entre cada uno (aproximadamente) del proceso específico con elevado consumo de CPU cuando se esté reproduciendo el problema.

 

Al igual que en el anterior escenario, podemos utilizar las herramientas Debug Diagnostics y Adplus para capturar este tipo de volcados. Adicionalmente, existe una herramienta llamada ProcDump diseñada especialmente para generar volcados cuando un proceso supere un determinado umbral de consumo de CPU. En los siguientes posts encontraréis la información detallada sobre cómo generar los volcados:

 

·         Cómo capturar volcados de hang con Debug Diagnostics Tool

·         Cómo capturar volcados de hang con Adplus (próximamente)

·         Cómo capturar volcados de hang con ProcDump (próximamente)

 

Próximamente veremos cuándo y cómo capturar volcados de memoria en modo crash.

 

Hasta pronto

- Daniel Mossberg

  • 0 Comments
Debugging, Herramientas
Leave a Comment
  • Please add 8 and 2 and type the answer here:
  • Post
  • © 2013 Microsoft Corporation.
  • Terms of Use
  • Trademarks
  • Privacy & Cookies
  • Report Abuse
  • 5.6.426.415