[jquery/ajax] te veel openstaande verbindingen

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • Aboe
  • Registratie: April 2000
  • Laatst online: 10-07 11:55
momenteel gebruik ik naar alle tevredenheid de jquery-library, ajax werkt prima, ik gebruik voornamelijk de $.get methode, echter, op een gegeven moment staan er ontzettend veel connecties open (netstat).

Is er een manier om er voor te zorgen dat de verbinding weer gesloten wordt, bij een succes?

Het hergebruik van een connectie is natuurlijk ook een optie..

Refreshen van pagina etc na een succesvolle ajax uitvoer werkt allemaal prima,
probleem is dus dat je na een tijdje netwerk problemen krijgt als je wat handelingen op de site hebt verricht.

Het afsluiten van de browser lost de problemen wel op, maar goed, dat is dus niet een werkbare optie.

Acties:
  • 0 Henk 'm!

  • Gonadan
  • Registratie: Februari 2004
  • Laatst online: 09:01

Gonadan

Admin Beeld & Geluid, Harde Waren
De oplossingen geef je volgens mij zelf al, de verbinding handmatig verbreken of hergebruiken.
Beiden zouden in mijn ogen mogelijk moeten zijn.

Look for the signal in your life, not the noise.

Canon R6 | 50 f/1.8 STM | 430EX II
Sigma 85 f/1.4 Art | 100-400 Contemporary
Zeiss Distagon 21 f/2.8


Acties:
  • 0 Henk 'm!

  • Skaah
  • Registratie: Juni 2001
  • Laatst online: 16-09 18:38
Je kan ook Keep-Alive uitschakelen op de server.

Acties:
  • 0 Henk 'm!

  • Aboe
  • Registratie: April 2000
  • Laatst online: 10-07 11:55
ok, maar uiteraard was er de impliciete vraag: Hoe?

jquery:
de $.get() doet netjes een onSuccess, dus daarmee lijkt de kous af,
hoe sluit ik de verbinding daadwerkelijk?
ik kan het niet in de opties vinden..

een client-side optie heeft in ieder geval de voorkeur,
tenzij ik dit ook in het aangeroepen php script kan doen (hoe?)
headers?
nadeel hiervan kan zijn dat het client-side script nog steeds de verbinding om een of andere reden open houdt, ondanks dat je vanaf de server zegt dat ie dicht mag, liefst, dus een client-side optie.

herconfigureren van de server (apache) is sowieso geen optie.
(dan geldt dit namelijk ook meteen voor alles, het gaat mij puur om het ajax gebeuren)

het allermooist zou hergebruik van de verbinding zijn, maar dan nogmaals, hoe?

jquery documentatie geeft in ieder geval weinig hulp..

Acties:
  • 0 Henk 'm!

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 22-09 16:31

Bosmonster

*zucht*

Voor zover ik weet houdt jQuery niet alle verbindingen open die je 1x hebt gebruikt, maar worden die verbindingen gewoon gesloten. Daarnaast is het aantal open verbindingen per browser gemaximaliseerd. (Firefox zal nooit meer dan 8 verbindingen per server openen als het goed is bijvoorbeeld).

Heb je al een testcase gemaakt met een eenvoudig AJAX call zonder de rest van je applicatie?

Wat je anders nog kan proberen is een AJAX Queue plugin gebruiken, maar die is over het algemeen niet benodigd voor wat jij noemt, maar meer als de volgorde van de calls van belang is.

[ Voor 71% gewijzigd door Bosmonster op 08-04-2009 14:23 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Ik zit me ook af te vragen hoe precies je hebt bepaald dat er zoveel connecties open staan. Zelf heb ik dit nog nooit gezien en ik heb ajax apps gebouwd die urenlang elke paar seconden een ajax request maakten.

Acties:
  • 0 Henk 'm!

  • Aboe
  • Registratie: April 2000
  • Laatst online: 10-07 11:55
de ajax queue plugin kwam ik ook tegen..

dit kan in ieder geval een oplossing zijn..
met ajax koppel/ontkoppel/verwijder etc ik items, waarna de inhoud van de pagina ook met ajax wordt gerefreshed.. dit refreshen zou in ieder geval in de zelfde queue kunnen gebeuren..

zelfs de acties zouden in de queue kunnen, daar dan de acties ook netjes achter elkaar plaats vinden. beetje overkill, maar zeer zeker niet schadelijk.

maar dan zou ik dus wel even moeten testen of deze queue plugin uiteindelijk ook niet op hetzelfde probleem stuit, als deze intern namelijk de zelfde functies gebruikt en alleen er voor zorgt dat je ze sequentieel uitvoert, dan zal het probleem zich nog voor doen.

De dingen die ik met ajax doe worden namelijk door de gebruiker getriggered, aangezien het onmogelijk is om 10 acties tegelijk te doen, doet de gebruiker het nu al min of meer sequentieel. Het gaat daarnaast om zaken die zeer snel af te handelen zijn.

dit kwam aan het licht, doordat ik netwerk problemen kreeg.. het viel me op dat het telkens was als ik de betreffende site aan het gebruiken was. sluit ik de browser af, dan houden de problemen op.
met 'netstat -a' zag ik dat er een aanzienlijk verschil was tussen 'normaal' gebruik en wanneer ik op de betreffende site zit. de link met ajax was daarna niet moeilijk te leggen.
Pagina: 1