Søg på DotNyt:
Denne blog er flyttet til www.nielsbrinch.com


lørdag den 27. januar 2007

Find et memory leak

skrevet af Niels Brinch

Hvis man har en stor web-applikation og en masse brugere, kan man tit løbe ind i problemer med serverens hukommelse. Jeg havde heldigvis sat alarmsystemer op til at gøre mig opmærksom på, hvis det var ved at være galt fat.

Alarmen kom - men baseret på antallet af brugere 'burde' den ikke være kommet (endnu). Jeg kunne derfor hurtigt konkludere at der var et memory leak af en art.

Jeg fik et tip om at bruge ANTS Profiler fra Red-Gate - og det skulle vise sig at være et godt tip.

Sådan brugte jeg det:

1. Jeg startede ANTS Profiler og blev spurgt om jeg ville undersøge performance eller memory.

2. Jeg valgte den ASP.NET-applikation som jeg havde mistænkt for at være synderen.

3. Så kørte profileren. Jeg afprøvede så nogle af de mistænkte scenarier i applikationen og tog et Snapshot af hukommelsesforbruget hver gang, for at kunne sammenligne med tidligere Snapshots og identificere om der var unødigt ekstra-forbrug.

Det viste sig at den ASP.NET-applikation var helt fin, men da jeg gentog øvelsen med en anden applikation var der bid. Hukommelsesforbruget steg for hver gang jeg viste en brugergrænseflade.

I ANTS Profiler skiftede jeg faneblad til "All objects" og sorterede på størrelse. Jeg kunne se de største objekter var nogle streng-objekter og dem blev der bare flere og flere af. Ved et klik på objektet kunne jeg se hvorfra det var blevet skabt og hvor det var placeret. Det viste sig at være en streng som skulle bruges i et sekund, men blev lagt i cachen i 23 timer.

Problem løst!

0 kommentarer

0 Kommentarer:

Send en kommentar

<< Tilbage


 
Til forsiden

Niels Brinch