Avatar billede gyxi Nybegynder
25. januar 2007 - 09:54 Der 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?
Avatar billede kalp Novice
25. januar 2007 - 10:09 #1
Avatar billede khs1a Nybegynder
25. januar 2007 - 10:11 #2
ants profiler er din ven til at få løst problemmet.
http://www.red-gate.com/products/ANTS_Profiler/index.htm
Avatar billede kalp Novice
25. januar 2007 - 10:12 #3
og udmærket svar i indlæg nr. 2 her
http://www.dotnet247.com/247reference/msgs/55/276803.aspx
Avatar billede gyxi Nybegynder
25. januar 2007 - 10:37 #4
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?
Avatar billede kalp Novice
25. januar 2007 - 10:41 #5
ja men jeg ville nok sætte den til at bruge mindre for det er ved de 800mb fejlen opstår har jeg forstået
Avatar billede gyxi Nybegynder
25. januar 2007 - 12:27 #6
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.
Avatar billede khs1a Nybegynder
25. januar 2007 - 12:36 #7
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.
Avatar billede gyxi Nybegynder
25. januar 2007 - 12:47 #8
Tak for hjælpen begge to. Læg svar.
Avatar billede kalp Novice
25. januar 2007 - 12:48 #9
ingen årsag:)
Avatar billede khs1a Nybegynder
25. januar 2007 - 12:48 #10
God bug jagt!
Avatar billede gyxi Nybegynder
26. januar 2007 - 10:24 #11
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.

Problem løst.

Klapsalver til khs1a og ANTS Profiler herfra :)
Avatar billede khs1a Nybegynder
26. januar 2007 - 10:47 #12
Tillykke!
Avatar billede gyxi Nybegynder
02. februar 2007 - 11:51 #13
Ville bare lige skrive til andre der måske leder efter et memory leak, at jeg har uddybet hvordan jeg benyttede ANTS Profiler på denne side:

http://www.dotnyt.dk/2007/01/at-finde-et-memory-leak.html
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester