03. december 2010 - 12:52Der er
6 kommentarer og 1 løsning
Intet svar fra side, når den er færdig med at behandle data
Jeg har en asp-side, som konverterer alle jpg-filer i en bestemt mappe til en anden størrelse (via aspJpeg).
Antallet af filer er lidt forskelligt, nogle gange få, andre gange mange, og af og til rigtig mange. Når der er rigtig mange (måske 1,5Gb billeder), så "fortæller" siden man ikke, at den er færdig med at konvertere dem, men står bare stadig som om de loader?!
Jeg kan se den er færdig, fordi alle billeder i den oprindelige mappe ER blevet konverteret.
Hvis det er f.eks. 1Gb, så går det fint (det tager lidt tid, men går fint). Så problemet opstår et eller andet sted mellem 1Gb og 1,5Gb.
Det er ikke fordi det tager SÅ lang tid med 1,5Gb. Det er måske 10 minutter, og jeg har sat session.timeout = 240 og server.scripttimeout = 14400.
Jeg får ikke en fejl frem, men det skyldes jo nok, at den først laver timeout efter 4 timer.
Men er der nogen der ved, hvorfor det sker, når der behandles over en vis mængde data? Eller nogen idéer til, hvad jeg skal kigge efter?
Det kan være at ASPJpeg løber tør for hukommelse. Jeg har selv haft lidt udfordringer med at hukommelsesforbruget stiger støt på sites der benytter ASPJpeg relativt intensivt. Specielt kunne jeg forestille mig at der ved skalering og konvertering generelt opstår en del "garbage", som ikke bliver ryddet op.
Persits skriver vist selv noget om, at kan skal sørge for at recycle sin pool med jævne mellemrum for at undgå hukommelsesoverløb, men det er ikke noget jeg har arbejdet med i praksis, da sitet jeg benytter komponenten på, recycler én gang i døgnet og dermed får ryddet op i tide langt de fleste gange.
Jeg har spekuleret lidt i at isolere komponenten i en app (og en pool) for sig selv, så jeg kan recycle mere aggressivt, men indtil videre er det ikke nødvendigt (jeg har det bare i baghånden som en mulighed :-)).
Jeg kan godt følge dig, men nu har jeg studeret det lidt, og er ikke sikker på, at problemet ligger der.
Men siden konverterer 1,5Gb billeder, kommer CPU forbrug aldrig over 13% og fysisk hukommelse i brug, kommer ikke over 25%.
Hvis problemet skyldes at hukommelsen ikke bliver frigivet igen, så vil behandling af f.eks. 1Gb jo også fejle, når først hukommelsen er brugt, og det gør det ikke.
Det er ret konstakt, at 1Gb virker, 1,5Gb gør ikke. Jeg har ikke testet nok til at vide præcis, hvor imellem problemet opstår.
Jo, der burde komme en fejl, med mindre du bruger on error resume next...
Hvis dit site kører på en IIS 7, har du mulighed for at opsætte et ret dybdegående trace på det der kører (og fejler) på serveren. Dette gælder også for scripts. Det kunne måske være en idé at prøve dette for at se om der kommer noget i loggen. Dette sker, såvidt jeg ved, kun, hvis der opstår en kørselsfejl som ikke håndteres - og hvis du håndterer fejl, så benytter du nok også on error resume next - såfremt du anvender VBScript som serversprog. Vær dog varsom med dette trace, for store scripts genererer mange tracedata og kan være ret tungt for serveren at arbejde med.
Serveren kører faktisk IIS7, så det vil jeg prøve (kender ikke lige til det, men kan vel finde noget om det :-)
Der er ikke noget i den generelle event log nu, og jeg bruger ikke on error resume next.
Jeg har lige testet på en anden server, som kører IIS 6. Men det er en noget langsommere server, og fremfor de 6 minuitter, tog det 19 minutter at omdanne de samme filer. MEN.... til gengæld afsluttede siden som forventet?!
Underligt, men fejlen er da lokaliseret til et eller andet på serveren/IIS.
Så lykkes det vist (endelig) at finde fejlen (har dog ikke arbejder på problemet hele tiden :-)
Det viste sig, at problemet kun opstår, når jeg sidder på mit kontor, så problemet er lokaliseret til forbindelse/routeren, og ikke noget, som jeg vil gøre yderligere ved. Det virker nemlig fra alle de andre steder, jeg har testet.
Softspot, opretter du et svar, så du kan få point!
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.