Avatar billede stringbuffer Nybegynder
23. maj 2002 - 12:04 Der er 8 kommentarer og
1 løsning

Connection reset by peer

Jeg har lavet et program til windaz, som skal stress-teste min chatserver. Den logger et ønsket antal genererede brugernavne på og starter en tråd for hver af dem.

Hver tråd simulerer en klient, og gør følgende:
1. etablerer forbindelse til serveren og sender userid
2. modtager liste over rum
3. /join'er et rum (der sker en ligelig fordeling af klienter til de forskellige rum)
4. sender en linie og modtager linier fra serveren med fast interval

Både chatserveren og stress-programmet er kodet så det udskriver fejlmeddelslser når en socket-operation giver fejl eller forbindelsen lukkes.

Mit problem går ud på følgende: hvis jeg starter programmet med f.eks. 400 klienter, der bliver logget på, så lukker forbindelsen i nogle af dem med fejlkode 10054, som såvidt jeg kan se i winsock API betyder det samme som Connection reset by peer. Problemet er bare at chatserveren får præcis samme fejlmeddelelse når det sker.

Spørgsmålet er så: a) Hvad er det, der gør at forbindelsen afbrydes, og b) Hvem afbryder forbindelsen, server eller klient?
Avatar billede chries Nybegynder
23. maj 2002 - 12:54 #1
kunn være du er stød imod den maksimale antal åbne sockets du må have (for winsock). den er forskellig fra os til os. f.eks win95 er der en begrænsning på 100.

læs mere her (punkt 4.8):

http://tangentsoft.net/wskfaq/advanced.html
Avatar billede chries Nybegynder
23. maj 2002 - 12:54 #2
kan..
Avatar billede chries Nybegynder
23. maj 2002 - 12:56 #3
okay, så lige NT have et limit på 12.600 ved 64 mb ram og w2k et på 25000.
Så det er nok ikke dte.
Avatar billede stringbuffer Nybegynder
23. maj 2002 - 12:58 #4
det er det nemlig heller ikke... jeg ville slet ikke kunne åbne en socket hvis jeg stødte på max antallet.
Avatar billede stringbuffer Nybegynder
23. maj 2002 - 12:59 #5
har 384 MB RAM og dual P3 800, og kører w2k pro. Så jeg tror ikke det er noget med ressourcemangel.
Avatar billede chries Nybegynder
23. maj 2002 - 12:59 #6
åbner alle 400 "samtidlig" en socket. kan være serveren ikke kan klare belastningen ?
Avatar billede jpk Nybegynder
23. maj 2002 - 15:17 #7
Har du prøvet at indsætte et delay mellem hver klient der logger på?
(for at se om der evt. er tale om en timeout p.g.a. peak-belastning)

Opstår problemet konsekvent?
Avatar billede stringbuffer Nybegynder
24. maj 2002 - 21:12 #8
problemet opstår altid, der er delay mellem hver klient, har eksperimenteret lidt med forskellige værdier... men det er ikke det, der er problemet.

Problemet opstår muligvis pga. kollisioner på netværket. Hver gang en klient sender en linie, skal chatserveren skrive samme linie ud til alle andre klienter i samme rum, i mit tilfælde bliver det omkring 30 i hvert rum.

Det med timeout, sker det ikke kun hvis der ikke sendes en SYN/ACK indenfor nogle minutters tid?
Avatar billede stringbuffer Nybegynder
24. november 2002 - 14:05 #9
gammelt spg lukkes
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