13. januar 2014 - 09:57Der er
13 kommentarer og 2 løsninger
Hvor glemmer jeg at lukke en forbindelse
Hej
Jeg har en ASP.NET applikation som tilsyneladende et eller andet sted ikke får lukket en connection (eller frigivet til Pool'en) Jeg får ind imellem denne fejl:
"Timeout expired. The timeout period elapsed prior to obtaining a connection from the pool. This may have occurred because all pooled connections were in use and max pool size was reached. "
Hvordan kan jeg finde ud af hvor i min applikation denne forbindelse ikke bliver lukket?
Jeg har tidligere læst om nogle tools der kunne spore den slags, men kan ikke finde noget om det nu.
Det gør jeg ikke, men jeg lukker altid i en finally, hvad skulle være bedre ved using, som jeg godt ved alle anbefaler?
Det er også muligt jeg vil gøre det, men lige nu vil jeg gerne finde ud af hvad der gør det her. Jeg er forøvrigt begyndt at bruge noget Entity Framework i nogle situationer, kan det give den slags problemer?
i praksis er using en try med en finaly, altså det samme som det du gør, det er bare pænere og kræver mindre kode at bruge en using.
EF kan bruges på mange måder og kan for så vidt sagtens give denne slags problemer, det er dog kun et spørgsmål om hvordan du som udvikler har kodet dig ud af det præcis som med en "almindelig" connection.
Jeg kan ikke lige komme i tanke om nogle af den type værktøjer omend de dog findes - men jeg tror at der hvor jeg oftest ser fejlen er når man åbner og lukker connections i et loop, måske det kan lede dig på vej i din applikation.
Et quick-fix er at forhøje din pool size hvis den ikke allerede er for høj.
Fejlen har ikke optrådt siden jeg lavede en lidt længere timeout og satte Max Pool size til 200.
Det jeg tænkte på med at jeg sætter connection til null, er at hvordan kan den genbruge en connection hvis den er sat til null? Er det ikke det pool'en gør, genbruger connections?
Det jeg tænkte på med min kommentar var, at hvis der opstår en fejl og det åbenbart sker så ofte at det kan gå ud over performance, så er det måske ikke kunne en lukke-connection der skal tilføjes men måske noget validering eller lignende så fejl helt undgås.
Jeg skal generelt snart have gennemgået den del af koden, den er ført med fra første version. Dejligt at få lært ordentligt om det inden, så næste DBHandler-version bliver bedre.
Tak for svarene og kommentarerne
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.