21. juli 2010 - 13:57Der er
10 kommentarer og 1 løsning
Applikation giver fejl ved høj belastning
Jeg har lavet en applikation, der er blevet testet endog MEGET grundigt, da den skal kunne klare en myndighedskontrol, så jeg er sikker på, at al kode virker som det skal. Under testen - da kun få var på og tingene foregik forholdsvis roligt - var der aldrig fejl.
Nu er applikationen 'sluppet fri' og der er over 150 brugere på nu. Særligt to brugere belaster meget, da de har flere sessioner åbne og gør tingene meget hurtigt. Når en af disse brugere kommer på, virker alt som det skal i en periode, men på et tidspunkt kommer der en masse fejl (det virker som om applikationen 'bliver træt' og kommer med 'Object reference not set to an instance of an object', som vist er en meget almindelig fejlmelding). Jeg har indsat kode i global.asax, så jeg selv får en mail ved alle fejl i applikationen og af disse kan jeg se, at fejlen sker alle mulige steder i koden og altså ikke et veldefineret sted. Jeg har gået koden efter for at tjekke, at jeg ikke lade instanser stå åbne uden at lukke dem med = nothing, men alt ser ok ud.
Det er ved at drive mig (og brugerne) til vanvid - har I et godt bud på, hvor fejlen kan ligge?
Jeg har nogle rutiner liggende i en class som jeg kalder fra andre dele af applikationen og i denne benytter jeg Try - Catch og under Catch har jeg denne liggende:
Nu svarer det lidt til at lede efter intelligent liv i universet ... men hvis du har problemer med timeout på databasen, så får du ikke noget at se - det skrives kun i brugerens browser. Og derefter returneres sikkert noget, der er null.
Når du nu ved at dine kode ikke er "elegant", for at sige det pænt, så kan du jo starte der.
erikjacobsen -> Det har du nok ret i!! Jeg kan se, at jeg ikke har været grundig nok til at lukke forbindelsen efter brug, dvs. ved intensivt brug åbnes mange forbindelser - kan dette være grunden til fejl? Jeg vil forsøge at få dem lukke efter brug.
Det vil nok være godt at få kigget databasekoden igennem for lukning af connections. Du bruger VB.NET? Du kan fx lukke forbindelsen i finally-delen af en try-catch.
Du bør også logge - eller få en mail - hvis databasekoden fejler.
Da du jo ikke samler på point, vil jeg tillade mig at høste dem selv.
Synes godt om
Ny brugerNybegynder
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.