Einzelnen Beitrag anzeigen

Assertor

Registriert seit: 4. Feb 2006
Ort: Hamburg
1.296 Beiträge
 
Turbo C++
 
#2

Re: TIdHTTPWebBrokerBridge und die Connections (TIME_WAIT)

  Alt 20. Apr 2010, 12:20
Hallo moelski,

Zitat von moelski:
Was aber schon merkwürdig ist sind die Connections die TIdHTTPWebBrokerBridge offen hält.
Ich ändere das mal: die Connections die Windows offen hält.

TIME_WAIT und 2 Minuten sind das deutliche Indiz.

Zitat von moelski:
Müsste die nicht im Normalfall sofort verschwinden? [...] Oder sehe ich da was falsch?
1) Nein und 2) Ja.

Nach der Socket Freigabe wartet der TCP/IP Stack per Default 120 Sekunden für die Freigabe aus dem FD_WAIT State. Dieses Verhalten des Betriebssystems soll u.a. einer sauberen Beendigung der Kommunikation dienen.

Zitat von moelski:
Das blöde an der Sache ist nun, das - wenn der Webservice schnell abgefragt wird - eine Menge Connections rumdümpeln und auf ihr Timeout warten.

Hat jemand eine Idee?
Ja, das ist richtig. Deswegen kann man dieses Verhalten über die Registry (insb. bei Servern) steuern. Grundlagen hier: http://msdn.microsoft.com/en-us/library/ms819739.aspx und guter Suchbegriff ist "TcpTimedWaitDelay".

Schau auch mal, ob bei der WebBrokerBridge sowas wie ReuseSocket als Property verfügbar ist (ich weiß das jetzt nicht aus dem Kopf).

Wenn Du am Zielrechner das Verhalten änderst, mußt Du aber mit den freien Ports aufpassen. Gerade bei W2k3 oder W2k8 sind dort iirc nur Ports 1000 bis 5000 für ausgehende Kommunikation frei, da kommt man schnell als Limit.

hth,

Gruß,
Assertor
Frederik
  Mit Zitat antworten Zitat