Results 1 to 11 of 11

Thread: Windows 10 en maximaal aantal connecties

  1. #1

    Windows 10 en maximaal aantal connecties

    Hallo hallo,

    Is er een maximum aan het aantal connecties dat een Windows 10 Home edition aan kan? Ik ben mijn REST servertje aan het testen met behulp van JMeter (tool van Apache om o.a. geautomatiseerd HTTP requests te versturen), maar boven een aantal JMeter threads die requests versturen ("gebruikers") werkt het niet meer. Mijn REST server maakt gebruik van Postgres (via het netwerk) de melding die ik daar krijg is:
    Code:
    LOG:  could not receive data from client: unrecognized winsock error 10054
    Bij voorbaat dank!

  2. #2
    Er zit natuurlijk wel een limiet in (op alles zit altijd wel een limiet ).
    Bij hoeveel connecties kom je dit probleem ongeveer tegen?

  3. #3
    mov rax,marcov; push rax marcov's Avatar
    Join Date
    Apr 2004
    Location
    Ehv, Nl
    Posts
    10,357
    Aantal sockets, dus stuk of 40 duizend. Zowel de web kant als de database kant.

    Wat betreft database kant:

    Postgres is wel berucht dat ie als een razende door sockets heen gaat. (een transactie en een connectie zijn daar gelijk), en als de connectie naar de db niet goed afsluit is dat een minuut of 8 TCP/IP timeout.

    Een van de Lazarus devels heeft in zijn praktijk situatie daar ooit enorm last van gehad (zijn apps sloten de connectie goed af, maar werkten via mobiele netwerken, dus als een mobiel netwerk hikte......), en is eigenlijk het enige zwakke punt van postgres dat ik ken.

    Controleer of de rest app de pg connections/transacties goed afsluit, en configureer evt de TCP/IP timeout tijd korter (dan de default 1000 seconden iirc). Onder windows weet ik dat niet goed, maar in *nix is het socket option SO_LINGER.

    Ik geloof dat http connecties per definitie lingeren (want anders zou dat staat zijn), maar mogelijk kan je dat in de apache config beperken.

    Op het moment dat het mis gaat eens met netstat -a naar aantal connecties kijken?
    Last edited by marcov; 12-Feb-19 at 13:05.

  4. #4
    Als ik in netstat de established connections bekijk dan zijn dit er in totaal (inclusief verbindingen die niks met de test te maken hebben) 186, waarvan er zeker 170 van mijn test/applicatie zijn. iI had eerlijk gezegd dat het er veel minder zouden zijn, maar misschien reken ik verkeert. Ik heb een connectionpool naar de database met minimaal 10 en maximaal 50 verbindingen. Om het REST request af te handelen heb ik 1 DB verbinding nodig per instantie van de REST service (kbmmw), daarnaast is er waarschijnlijk per JMeter thread 1 verbinding nodig. Het gaat al mis als 2 threads/gebruikers heb in JMeter

  5. #5
    Quote Originally Posted by luigi View Post
    ... waarvan er zeker 170 van mijn test/applicatie zijn.
    ...
    Ik heb een connectionpool naar de database met minimaal 10 en maximaal 50 verbindingen. Om het REST request af te handelen heb ik 1 DB verbinding nodig per instantie van de REST service (kbmmw), daarnaast is er waarschijnlijk per JMeter thread 1 verbinding nodig. Het gaat al mis als 2 threads/gebruikers heb in JMeter
    Als je de verbinding verbreekt als je die 50 verbindingen naar de server bereikt hebt, dan is het wel logisch dat je bij 170 REST verbindingen wat foutmeldingen krijgt

  6. #6
    mov rax,marcov; push rax marcov's Avatar
    Join Date
    Apr 2004
    Location
    Ehv, Nl
    Posts
    10,357
    Ik heb wat gegoogled, en de connectie beperkingen van pro (vs server) gelden alleen voor SMB en IIS (en Exchange etc), niet voor 3rd party software (en ik neem aan dat apache dat ook is) logisch ook, want b.v. een beetje torrent client maakt al honderden connecties.

    Error 10054 wordt veroorzaakt door de "andere" kant. Die reset de connectie. Behalve door de remote machine kan het blijkbaar ook veroorzaakt worden door alles er tussen in, zoals netwerk filter drivers(firewalling antivirussen), Quality of Service (router die bepaalde types connectie voorrang geeft)

    Kijk ook eens of postgres een eigen max connecties heeft gespecificeerd.

  7. #7
    Als je de verbinding verbreekt als je die 50 verbindingen naar de server bereikt hebt, dan is het wel logisch dat je bij 170 REST verbindingen wat foutmeldingen krijgt
    Die 50 is een max van de connectionpool van de database als het goed is zijn er niet meer dan 10 of 11 verbindingen.

    Kbmmw services zijn eigenlijk een soort threads met ieder een eigen DB verbinding (soms meer per service maar in mijn geval 1). Deze services bevinden zich ook in een pool en ik verwacht eigenlijk dat als er 10 gelijktijdige gebruikers zijn er 10 kbmmw services worden aangemaakt en dus ook max 10 DB connections nodig zijn. Ik begrijp dan ook niet zo goed waarom ik netstat zo een 170 verbindingen zie Ik zou er ongeveer 30 verwachten 10 voor de db, 10 voor JMeter en 10 voor de kbmmw service.

    Ik heb wat gegoogled, en de connectie beperkingen van pro (vs server) gelden alleen voor SMB en IIS (en Exchange etc)
    In mijn applicatie maak ik gebruikt van httpSys, dit is als ik goed geïnformeerd dezelfde dll/library(?) als IIS gebruikt. Zou dit de beperking kunnen zijn?

  8. #8
    mov rax,marcov; push rax marcov's Avatar
    Join Date
    Apr 2004
    Location
    Ehv, Nl
    Posts
    10,357
    httpsys: Geen idee, dat gaat buiten mijn kennis om. De enige keer dat ik met IIS gebaseerde apps gewerkt heb zat er een framework (webhub) en een aparte web beheerder tussen.

    Wanneer geeft de webapp de connectie terug aan de pool ? Mogelijk dat de webserver sessie objecten levend houdt en pas na een x tijd recycled, en dat dan de db connectie terug naar de pool gaat?

  9. #9
    Quote Originally Posted by luigi View Post
    In mijn applicatie maak ik gebruikt van httpSys, dit is als ik goed geïnformeerd dezelfde dll/library(?) als IIS gebruikt. Zou dit de beperking kunnen zijn?
    Ik neem aan dat je http.sys bedoelt?

    Als je zoekt op http.sys connections 10054, dan kom je genoeg problemen en oplossingen tegen

  10. #10
    Wanneer geeft de webapp de connectie terug aan de pool ? Mogelijk dat de webserver sessie objecten levend houdt en pas na een x tijd recycled, en dat dan de db connectie terug naar de pool gaat?
    Er worden geen sessie gebruikt mijn kbmmw service is stateless. Voor ieder gelijktijdig verzoek wordt een nieuwe instantie van een kbmmw service gestart met een configureerbaar maximum. Zodra een (REST) request is afgehandeld in een kbmmw service kan deze direct worden gebruikt voor een ander request. Als een bepaalde instantie een bepaalde tijd (configureerbaar) niks staat te doen wordt deze automatisch opgeruimd. Dus ik vermoed dat het probleem niet daar ligt.

    Ik neem aan dat je http.sys bedoelt?

    Als je zoekt op http.sys connections 10054, dan kom je genoeg problemen en oplossingen tegen
    Yep dat is em. Het is inderdaad redelijk wat leesvoer, wordt geen Neflix vandaag

  11. #11
    Het probleem is inmiddels opgelost. Het kbmmw framework dat ik gebruik, heeft een adapter klasse voor de Unidac connection, waarbij een unidac connection als een template functioneert. Helaas werd één belangrijke property van de Uniconnection ,"AutoCommit" niet doorgegeven. Omdat deze property bij Unidac standaard op true staat en deze false moet zijn voor kbmmw, ging het verkeerd. Het gevolg was dat kbmmw niet de volledige controle had over transactie omdat deze impliciet werden uitgevoerd door auto commit.

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •