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 |