20. april 2012 - 11:34Der 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.
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
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.