Perfmon: qual contador identifica que os threads estão aguardando?

5

Durante o teste de carga de um aplicativo do ASP.NET, descobrimos que as páginas levam de 20 a 30 segundos sob carga pesada.

Suspeitamos que isso acontece porque as páginas estão aguardando chamadas de banco de dados ou serviços da Web.

Existe algum contador de perfmon em particular que possa identificar esse tipo de gargalo nos servidores da web? CPU, memória e disco são normais.

Ou devemos usar uma ferramenta diferente de perfmon para rastrear esse gargalo?

    
por frankadelic 16.04.2010 / 01:26

1 resposta

2

Se você suspeitar que um determinado aplicativo ou serviço está causando vazamento de memória, investigue o uso de memória de seus aplicativos usando os seguintes contadores:

Memory\Available Bytes reports available bytes; its value tends to fall during a memory leak.
Memory\Committed Bytes reports the private bytes committed to processes; its value tends to rise during a memory leak.
Process\Private Bytes reports bytes allocated exclusively for a specific process; its value tends to rise for a leaking process.
Process\Working Set reports the shared and private bytes allocated to a process; its value tends to rise for a leaking process.
Process\Page Faults/sec reports the total number of faults (hard and soft faults) caused by a process; its value tends to rise for a leaking process.
Process\Page File Bytes reports the size of the paging file; its value tends to rise during a memory leak.
Process\Handle Count reports the number of handles that an application opened for objects it creates. Handles are used by programs to identify resources they must access. The value of this counter tends to rise during a memory leak; however, you cannot rule out a leak simply because this counter's value is stable.

Vazamentos de memória e o pool não paginado

Embora qualquer vazamento seja sério, os vazamentos de memória são particularmente preocupantes quando envolvem o pool não paginado. Muitos serviços do sistema alocam memória do pool não paginado porque precisam referenciá-lo ao processar uma interrupção e não podem receber uma falha de página nesse momento. Para identificar se um vazamento afeta ou não o pool não paginado, inclua os seguintes contadores em seu monitoramento:

Memory\Pool Nonpaged Bytes
Memory\Pool Nonpaged Allocs
Process\Pool Nonpaged Bytes

Como identificar: O aplicativo com vazamento está constantemente solicitando mais memória. É caracterizada pelo aumento de Bytes do Arquivo de Processo / Página na mesma taxa que os Bytes Confirmados do sistema; ou seja, todo compromisso de memória é devido a um processo. Os Bytes Disponíveis estão diminuindo constantemente até que o sistema pague algo e, em seguida, os Bytes Virtuais aumentam para liberar espaço para mais Bytes Disponíveis. O conjunto de trabalho do aplicativo com vazamento na verdade diminui quando partes dele são paginadas. Observe como as falhas de página / s aumentam conforme os bytes disponíveis diminuem.

O Windows Resource Kit inclui um programa de exemplo chamado LeakyApp.exe. Este programa tem a falha típica de alocar constantemente mais e mais memória.

    
por 20.05.2011 / 18:45