Avatar billede Kim Neesgaard Seniormester
21. juli 2010 - 13:57 Der 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?
Avatar billede erikjacobsen Ekspert
21. juli 2010 - 14:00 #1
Hvordan håndterer du exceptions fra fx database-connections og opslag?
Avatar billede Kim Neesgaard Seniormester
21. juli 2010 - 14:34 #2
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:

HttpContext.Current.Response.Write(Err.Description)

Nok ikke den mest elegante løsning....
Avatar billede erikjacobsen Ekspert
21. juli 2010 - 19:57 #3
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.
Avatar billede arne_v Ekspert
21. juli 2010 - 23:42 #4
En anden mulighed var en traditionel concurrency bug i.f.m. noget multithreaded kode.
Avatar billede Kim Neesgaard Seniormester
23. juli 2010 - 11:52 #5
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.

arne_v -> Hvordan vil man gøre dette?
Avatar billede Kim Neesgaard Seniormester
23. juli 2010 - 11:55 #6
Når der er mest belastning, foretages 2-5 søgninger pr. minut og der er i den situation, der opstår fejl.
Avatar billede erikjacobsen Ekspert
24. juli 2010 - 00:05 #7
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.
Avatar billede arne_v Ekspert
24. juli 2010 - 00:12 #8
VB.NET har også Using statement !
Avatar billede erikjacobsen Ekspert
24. juli 2010 - 16:43 #9
Ja, men kun ca. i de sidste 6 år.  ;)

Det vi andre snakker om, neesgaard, er sådan noget som http://www.pluralsight-training.net/community/blogs/fritz/archive/2005/04/28/7834.aspx der automatisk sørger for lukning af det der nu engang skal lukkes.
Avatar billede Kim Neesgaard Seniormester
26. juli 2010 - 11:33 #10
Ja ok - der har jeg så ikke fulgt godt nok med! Men tak - det ser ud til, at det er lige det, jeg skal bruge!!
Avatar billede Kim Neesgaard Seniormester
26. juli 2010 - 11:34 #11
Da du jo ikke samler på point, vil jeg tillade mig at høste dem selv.
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