Avatar billede thums Praktikant
20. april 2012 - 11:34 Der er 1 kommentar og
1 løsning

TCP forbindelse vha. Socket går i CLOSE_WAIT

Har en server der modtager MANGE sockets i sekundet.

Jeg lukker forbindelserne vha. af Socket.close() og kan se at den fyldes op med TCP forbindelser i CLOSE_WAIT som efter nogle sekunder forsvinder.

Jeg forbedrede performance med en faktor 2 ved at bruge ServerSocket.setReuseAddress(true), for at udnytte de TCP-forbindelser der netop er i CLOSE_WAIT, men lader til at jeg støder hovedet ind i samme mur efter at ramme det loft, som om at den kun ønsker at genbrug dem den ene gang.

Kan dog også være jeg har stirret mig blind på det så alle inputs er velkomne når det falder ind under emnet at maksimere antal accept()'s i sekundet på en Debian.
Avatar billede thums Praktikant
20. april 2012 - 12:04 #1
Emner jeg selv har været igennem er:

Backlog <--- er brugt med fordel men det er jo ikke holdbart at skalere antal forbindelser på den måde

setReuseAddress(true) <--- guld værd og absolut en forbedring fremfor ikke at bruge det og sætte setSoLinger(false|true, 0)

setSoLinger() <--- skal ikke bruges sammen med setReuseAdress da det forringer performance. Ihvertfald hvis man sætter tiden til 0 eller sætter den til false
Avatar billede thums Praktikant
19. juni 2012 - 13:43 #2
Lukker
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