25. januar 2007 - 09:54Der er
11 kommentarer og 2 løsninger
Typiske årsager til OutOfMemoryException
Jeg har 3 store ASP.NET-applikationer på en webserver som alle kalder en webservice-applikation. I løbet af en uges tid har de opbrugt serverens hukommelse og jeg får derfor "OutOfMemoryException".
Når jeg så bevæger mig ind på serveren kan se at der er ASP.NET-processer som fylder fra 300MB til 1GB hukommelse - når jeg slår processen ihjel kører applikationen en uge igen.
Jeg håber derfor I kan hjælpe mig med følgende to spørgsmål:
- I hvilke situationer har I andre typisk oplevet det samme? - Hvilke metoder er bedst til at finde frem til nøjagtig hvilket sted i applikationerne problemet er?
kalp: Tak. Serveren har kun 2 GB så det bør ikke være den spøjse 3GB-bug som er beskrevet i det indlæg som er problemet?
khs1a: Har du erfaring med at bruge værktøjet til at finde et memory leak i et driftmiljø? Det ser ud som om det fokuserer mest på performance og ikke så meget på hukommelsesforbrug.
kalp: Det ser rigtig interessant ud. Jeg vil prøve at sætte machine.config så applikationen kun lader processen bruge max 800 mb hukommelse. Eller måske mindre?
Jeg prøver at sætte den ned og vente en uge for at se om det har hjulpet. Men det er en slags behandling af symptomet som er fin nok - men det rigtige problem som ligger til grund for symptomet bliver ikke fundet. Det er vel ikke meningen at processer skal slås ihjel en gang imellem.
Jeg vil derfor stadig gerne høre om den profiler kan benyttes i praksis eller om der er en anden metode som er bedre.
profileren kan fortælle dig hvad der bruges memory til. Den kan også pinpointe evt. leaks. Programmet kan prøves i 15dage. Jeg har selv benyttet det til performance/memory optimering af en webservice hvor det har fungeret perfekt med gode performance/memory forbedringer.
Jeg brugte ANTS profiler på hvert af de projekter der evt. kunne forårsage problemet. Ved det ene projekt var der bid! For hver brugergrænsefladevisning steg hukommelsesforbruget.
Derpå skiftede jeg faneblad og sorterede på antal bytes forbrugt per objekt og kunne straks se en fællesnævner blandt de objekter der forbrugte mest. Ved klik på en af dem kunne jeg se den metode i den tredjepartskomponent som havde oprettet objekterne.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.