Sockets schließen

26/02/2012 - 19:14 von Stefan Reuther | Report spam
Hallo,

ich bastel gerade an einer Webanwendung. Die besteht im Wesentlichen aus
ein paar Application-Servern und einer Tonne CGI-Scripte, die per TCP
über Loopback miteinander reden.

Bei der Performance-Optimierung[1] kam die Frage auf: macht es
eigentlich einen Unterschied, ob das CGI-Script die kurzlebigen
TCP-Verbindungen explizit schließt, oder ob es sich einfach beendet?
Irgendwelche Timeouts o.à.?

Zielsystem ist aktuell Linux.


Stefan

[1] Wichtigste gelernte Lektion bisher: Pufferung statt Ausgabe in
Einzelelementen ('write(key); write(value); write(anotherKey); ...')
macht Faktor 10 bis 20 aus...
 

Lesen sie die antworten

#1 Jan Seiffert
26/02/2012 - 21:13 | Warnen spam
Stefan Reuther schrieb:
Hallo,

ich bastel gerade an einer Webanwendung. Die besteht im Wesentlichen aus
ein paar Application-Servern und einer Tonne CGI-Scripte, die per TCP
über Loopback miteinander reden.

Bei der Performance-Optimierung[1] kam die Frage auf: macht es
eigentlich einen Unterschied, ob das CGI-Script die kurzlebigen
TCP-Verbindungen explizit schließt, oder ob es sich einfach beendet?



Wenn der Prozess sich beendet, sollten alle seine FD/socket abgeràumt werden.
Ich würde es aber denoch als "schlechten Stil" betrachten, wenn sie nicht
expliziet geschlossen werden.
Besonders kannst du sie einseitig schon mal schliessen (shutdown), wenn es dein
Prokoll erlaubt, das ràumt vorzeitig Kernel-Resourcen frei.

Irgendwelche Timeouts o.à.?




Die üblichen das bei TCP ein Port eine Zeitlang nicht wiederverwendet werden
darf. Das könnte dir ins Bein beissen das dir die Ports ausgehen wenn du zu
schnell Verbindungen auf und zu machst.


Zielsystem ist aktuell Linux.


Stefan




Gruss
Jan

[1] Wichtigste gelernte Lektion bisher: Pufferung statt Ausgabe in
Einzelelementen ('write(key); write(value); write(anotherKey); ...')
macht Faktor 10 bis 20 aus...




Wenns auf Linux ist:
Du kennst TCP_CORK?

Ähnliche fragen