[ASP] MSSQL connectie echt sluiten

Pagina: 1
Acties:

  • Foxl
  • Registratie: Juli 2002
  • Niet online
Ben bezig met een leuk urenboek systeempje voor een klant, heb een stoomcursusje ASP gehad (Ben PHPer, maar een of andere flapdrol vond t leuk om het in ASP te maken) maar ik heb dus een klein probleem.

Met mijn scripts is volgens mij weinig mis, sluit alle database (MSSQL) verbindingen netjes aan het einde van mijn script, maar volgens de database blijven er verbindingen openstaan, en stapelt het aantal users zich na een tijdje dus lekker op, heel fijn, vooral omdat de klant maar een 10-user licentie heeft.
Dusss... Heeft iemand enig idee wat ik fout doe en hoe ik er voor kan zorgen dat een verbinding ook echt dichtgegooit word..

Thx.

I'm really easy to get along with, once you people learn to worship me...


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 15:58

gorgi_19

Kruimeltjes zijn weer op :9

Kijk eens naar het principe van connection pooling en op google:
http://www.google.nl/sear...=UTF-8&oe=UTF-8&hl=nl&lr=

Staat ook wel eea hierover.

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Verwijderd

Voorbeeld :
code:
1
2
conn.Close
set conn = nothing

Volgens mij is ie dan volledig afgesloten

Verwijderd

Ja en wat doe je met de recordset(s)? sluit je die wel af?

dus

rs.close
set rs = nothing

Verwijderd

Overigens is het verstandig om connections zo kort mogenlijk open te houden. Als er meerdere 10 users tegelijkertijd een pagina opvragen waar je de hele tijd de connectie open houdt, kan een 11de gebruiker niet meer op die pagina komen. Als je echter de connectie alleen open houdt tijdens queryen, en daarna direct sluit, is de kans kleiner dat je dit probleem krijgt. Vanwege connection pooling is het performance verlies van meerdere keren verbindingen opzetten en sluiten te verwaarlozen.

Succes :)

  • Foxl
  • Registratie: Juli 2002
  • Niet online
Dat
code:
1
2
conn.Close
set conn = nothing

Doe ik al, maar dat helpt om de een of andere rede niet, volgens Enterprise Manager blijven de verbindingen gewoon lekker openstaan.. :?

Dat connection pooling ziet er wel hoopvol uit, maar dan moet ik m'n hele script weer overhoop halen, en zo goed zijn m'n ASP skils nou ook weer niet..


Waarom is het in ASP niet gewoon zoals in PHP, je gooit connectie open in je script, en aan het einde van het script wordt de verbinding vanzelf dichtgemikt... :(

I'm really easy to get along with, once you people learn to worship me...


  • Foxl
  • Registratie: Juli 2002
  • Niet online
Ik heb dus nogsteeds gezelfde probleem, ik heb om de manier ff te testen dit scriptje gemaakt:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<%@LANGUAGE="VBSCRIPT"%>
<%
  Set cn = CreateObject("ADODB.Connection")
  cn.open  "dsn=***;uid=***;pwd=***;"
  for cnt = 1 to 10
    set RS = Server.CreateObject("ADODB.Recordset")
    RS.CursorType = 0
    RS.CursorLocation = 2
    RS.LockType = 3
    RS.Open "SELECT * from UrenKM_tmp", cn
    RS_numRows = 0
    response.write(RS.Fields.Item("ProjectID").Value)
    RS.close
    Set RS = Nothing
  next
  cn.Close
  Set cn = Nothing
%>


Op t eerste gezicht lijkt ie t leuk te doen, hij laat alleen nogsteeds de verbinding openstaan, hij recycled deze wel elke keer als t script gedraait wordt, maar als het script dan ook nog n keer in n ander browservenster wordt gedraait komt er vrolijk een connectie bij...
De connecties worden na een tijdje wel gesloten, maar t lijkt me eigelijk vrij logisch dat connecties meteen na het einde van het script worden dichtgegooit, en niet een paar minuten daarna...

Iemand enig id?

I'm really easy to get along with, once you people learn to worship me...


Verwijderd

Dat heet 'connection pooling' en dat is een goede eigenschap. Ipv dat iedere keer connecties werkelijk worden geopend en gesloten, wordt alleen de connectie vrijgegeven door de applicatie. Als er weer een nieuwe connectie in de applicatie geopend wordt met dezelfde connection properties (username, mode, database, etc), wordt de nog open connectie hergebruikt.

Kijk bij je ODBC Settings eens naar het tabje 'connection pooling'. Daar kun je het per driver aan- en uitzetten, en een time-out instellen.

HTH :)

  • raptorix
  • Registratie: Februari 2000
  • Laatst online: 17-02-2022
Connection pooling staat toch standaard aan voor sqlserver?

Vraagje, zet je soms ergens connections/recordsets in sessions of iets dergelijks?

  • Foxl
  • Registratie: Juli 2002
  • Niet online
Nope, zet helemaal niex in sessions, cookies of iets dergelijks..
Verwijderd schreef op 28 november 2002 @ 15:35:
Dat heet 'connection pooling' en dat is een goede eigenschap.
Ok, klinkt logisch allemaal, had ik ook al over gelezen, maar als ik connection pooling uitzet en ik draai het script dan weer 2 keer in 2 verschillende browservensters, dan blijven de connecties die dan worden geopent toch nog vrolijk een tijdje geopent.. :?

I'm really easy to get along with, once you people learn to worship me...


  • raptorix
  • Registratie: Februari 2000
  • Laatst online: 17-02-2022
Foxl schreef op 28 November 2002 @ 16:00:
Nope, zet helemaal niex in sessions, cookies of iets dergelijks..


[...]
Ok, klinkt logisch allemaal, had ik ook al over gelezen, maar als ik connection pooling uitzet en ik draai het script dan weer 2 keer in 2 verschillende browservensters, dan blijven de connecties die dan worden geopent toch nog vrolijk een tijdje geopent.. :?
Volgens mij werkt connection pooling zo dat er al standaard een paar connecties heeft naar de database, deze worden dan geloof ik weer gebruikt voor te poolen, het klopt dus dat er altijd een paar open staan als ik me niet vergis.

  • Foxl
  • Registratie: Juli 2002
  • Niet online
Ja ok, als je connection pooling aan hebt staan kan ik me er nog iets bij voorstellen, maar heb dat dus net uitgezet, en er is niex aan de situatie veranderd, je draait 2 scripts, er worden 2 connecties opengegooit en die blijven dan weer een tijdje slapen voor weggaan..

*ZuchT* Waarom is ASP toch zo :r

.... Waar slaat HTH trouwes op? (Jaaaah, ik ben een GoT n00b...)

[ Voor 10% gewijzigd door Foxl op 28-11-2002 16:21 ]

I'm really easy to get along with, once you people learn to worship me...


  • raptorix
  • Registratie: Februari 2000
  • Laatst online: 17-02-2022
Foxl schreef op 28 november 2002 @ 16:11:
Ja ok, als je connection pooling aan hebt staan kan ik me er nog iets bij voorstellen, maar heb dat dus net uitgezet, en er is niex aan de situatie veranderd, je draait 2 scripts, er worden 2 connecties opengegooit en die blijven dan weer een tijdje slapen voor weggaan..

*ZuchT* Waarom is ASP toch zo :r
:? sorry maar er is gewoon niets mis, zet maar eens een loop van 1000 om je script, dan krijg je echt geen 2000 connecties hoor.

Daarnaast heeft dit niets met ASP te maken.

  • Foxl
  • Registratie: Juli 2002
  • Niet online
raptorix schreef op 28 november 2002 @ 16:21:
[...]


:? sorry maar er is gewoon niets mis, zet maar eens een loop van 1000 om je script, dan krijg je echt geen 2000 connecties hoor.
Nee, maar open maar eens 3 scripts die allemaal een connectie openen in frames, dan heb je dus 3 connecties die vrolijk open blijven staan, en als je dan naar andere pagina's gaat browsen komen er weer vrolijk bij..
raptorix schreef op 28 november 2002 @ 16:21:
[...]
Daarnaast heeft dit niets met ASP te maken.
Gek genoeg heb ik er in PHP nooit last van gehad...

I'm really easy to get along with, once you people learn to worship me...


  • raptorix
  • Registratie: Februari 2000
  • Laatst online: 17-02-2022
Foxl schreef op 29 November 2002 @ 10:18:
[...]

Nee, maar open maar eens 3 scripts die allemaal een connectie openen in frames, dan heb je dus 3 connecties die vrolijk open blijven staan, en als je dan naar andere pagina's gaat browsen komen er weer vrolijk bij..


[...]

Gek genoeg heb ik er in PHP nooit last van gehad...
Ik zou toch nog maar eens goed naar je scripts kijken, ik werk nu zo een 4 jaar met ASP en heb nog nooit last gehad van dit probleem :?

  • Foxl
  • Registratie: Juli 2002
  • Niet online
Wij hier normaal ook niet (Naja hun niet, ik ben niet echt een ASPer) maar we hebben ook nooit gekeken naar t aantal connecties omdat we een open licentie hebben. Het probleem kwam pas aan t ligt toen we de applicatie gingen testen op de DB van de klant, en die heeft dus een 10 user-licentie..

.. Maar bij connection pooling blijven connecties dus een bepaalde tijd openstaan voor als het script dezelfde verbinding nog een keer wil openen. Als ik connection pooling uitzet zou de connectie dus meteen na het einde van het script gesloten moeten worden? (Want dat doet ie dus ook niet)

I'm really easy to get along with, once you people learn to worship me...


  • raptorix
  • Registratie: Februari 2000
  • Laatst online: 17-02-2022
Foxl schreef op 29 november 2002 @ 10:48:
Wij hier normaal ook niet (Naja hun niet, ik ben niet echt een ASPer) maar we hebben ook nooit gekeken naar t aantal connecties omdat we een open licentie hebben. Het probleem kwam pas aan t ligt toen we de applicatie gingen testen op de DB van de klant, en die heeft dus een 10 user-licentie..

.. Maar bij connection pooling blijven connecties dus een bepaalde tijd openstaan voor als het script dezelfde verbinding nog een keer wil openen. Als ik connection pooling uitzet zou de connectie dus meteen na het einde van het script gesloten moeten worden? (Want dat doet ie dus ook niet)
Heb je wel je server daarna op nieuw opgestart? Ik kan me zo voorstellen dat dat namelijk pas actief wordt op moment dat server wordt geboot.

  • Foxl
  • Registratie: Juli 2002
  • Niet online
Yup, uiteraard....

I'm really easy to get along with, once you people learn to worship me...


  • raptorix
  • Registratie: Februari 2000
  • Laatst online: 17-02-2022
http://www.lockwoodtech.c...SP_I&TitleID=Top_Articles

Misschien dat je hier wat aan heb, vind het zelf wel goed artikel.

Verwijderd

Wellicht een reboot? Heb je al gedubbelchecked of connection pooling werkelijk uit staat (ODBC -> Connection Pooling -> dubbelklik op SQL Server driver -> 'no')? Weet je zeker dat je de connectie met dezelfde user naar de database maakt?

Edit:
/me is traag vandaag 8)7

[ Voor 13% gewijzigd door Verwijderd op 29-11-2002 10:57 ]

Pagina: 1