Alle Standorte aktiv · 99.99% Uptime
Protokolle

Keep-Alive und Connection Pooling beim Proxy

Die wirksamste einzelne Änderung zur Verbesserung der Proxy-Performance ist nicht, einen schnelleren Proxy zu kaufen, sondern die bestehende Verbindung wiederzuverwenden. Ein Client, der für jede Anfrage eine neue Verbindung öffnet, zahlt die Verbindungsaufbaukosten immer wieder – und diese Kosten vervielfachen sich beim Weg über den Proxy.

Die tatsächlichen Kosten des Verbindungsaufbaus

ABBILDUNGDie Phasen der ersten Verbindung über den Proxy
EINRICHTUNG01DNSAuflösung~20 msProxy-Adressefür02TCP-Handshake~35 msClient ↔ Proxy03Proxy-Identität~35 ms407 → erneutesSenden04CONNECTTunnel~35 msTunnelaufbau05TLS-Handshake~70 msClient ↔ Ziel06Erste AnfragevariabelEigentliche Dateninsgesamt ~200 ms Fixkosten

Diese 200 ms fallen bei jeder neuen Verbindung erneut an. Wenn Sie 1.000 Anfragen senden und jedes Mal eine neue Verbindung öffnen, verbrauchen Sie allein für den Aufbau 200 Sekunden.

Wie funktioniert Keep-Alive?

In HTTP/1.1 sind Verbindungen standardmäßig persistent: Nach Eintreffen der Antwort wird die Verbindung nicht geschlossen, die nächste Anfrage geht über denselben Socket. Drei Dinge stören dieses Verhalten:

  • Der Server Connection: close sendet – die Verbindung wird geschlossen.
  • Der Client erzeugt bei jeder Anfrage ein neues Session-Objekt – der Pool greift überhaupt nicht.
  • Die Idle-Zeit wird überschritten – Proxy oder Server verwerfen die Verbindung.
Der häufigste Fehler

Im Code für jede Anfrage ein neues Session, Client oder Agent -Objekt zu erzeugen. Das deaktiviert die Wiederverwendung von Verbindungen vollständig, unabhängig von Ihrer Pool-Konfiguration.

Die richtige Konfiguration

ABBILDUNGVerbindung wiederverwenden
Pool-Konfiguration nach Sprache01# Python requests — Session bir kez oluşturulur02import requests03session = requests.Session()04session.proxies = {"https": "http://kullanici:sifre@proxy.example.com:8080"}05adapter = requests.adapters.HTTPAdapter(pool_connections=16, pool_maxsize=16)06session.mount("https://", adapter)07for url in urls:08 r = session.get(url, timeout=25) # aynı bağlantı yeniden kullanılır0910# Python httpx — limitleri açıkça verin11import httpx12limits = httpx.Limits(max_connections=16, max_keepalive_connections=16,13 keepalive_expiry=60.0)14client = httpx.Client(limits=limits, proxy=PROXY, timeout=25.0)1516# Node.js undici17import { Agent, setGlobalDispatcher } from "undici";18setGlobalDispatcher(new Agent({ connections: 16, keepAliveTimeout: 60_000 }));

Halten Sie die Poolgröße knapp unterhalb des Parallelitätslimits Ihres Anbieters. Überschreiten Sie es, werden zusätzliche Verbindungen aufgebaut und sofort wieder geschlossen.

Wie groß ist der Gewinn?

ABBILDUNGGesamtdauer für 1.000 Anfragen
MESSUNG061122183244Ohne Pool (neue Verbindung)Mit Pool (Keep-Alive)1002505007501000

In der Beispielmessung senkt die Nutzung des Pools die Gesamtdauer auf etwa ein Drittel. Der Gewinn wächst, je höher die Latenz zum Proxy ist.

TLS-Session-Wiederverwendung

Neben dem Verbindungspool gibt es eine zweite Gewinnquelle: das TLS-Session-Ticket. Beim erneuten Verbinden mit demselben Ziel kann statt eines vollständigen Handshakes ein verkürzter Handshake erfolgen. Die meisten modernen Clients tun dies automatisch; entscheidend ist, das Client-Objekt wiederzuverwenden.

ABBILDUNGVollständiger und verkürzter TLS-Handshake
TLSVollständiger HandshakeSession-WiederverwendungAnzahl der Runden2 RTT1 RTTZertifikatsübertragungJaKeineSchlüsselberechnungVollständigVerkürztTypische Dauer70–140 ms30–60 msBedingungErste VerbindungDasselbe Client-Objekt

Wenn Sie das Client-Objekt bei jeder Anfrage neu erzeugen, geht das Session-Ticket verloren und es wird jedes Mal ein vollständiger Handshake durchgeführt.

Die Balance der Idle-Zeit

Eine Verbindung zu lange offen zu halten kann ebenfalls Probleme bereiten: Proxy oder Zielserver können die Verbindung stillschweigend verwerfen, und Ihr Client merkt das erst bei der nächsten Anfrage. Das führt zum Muster „erste Anfrage fehlgeschlagen, zweite erfolgreich".

EinstellungEmpfehlungWarum
keepalive_expiry30–60 Sek.Muss kürzer sein als das Server-Timeout
PoolgrößeUnterhalb des ParallelitätslimitsMehr bedeutet vergeudete Handshakes
Wiederholungsversuch1-malGleicht eine verworfene Verbindung aus
Begrenzung der Verbindungslebensdauer5–10 Min.Langlebige Verbindungen werden schal
Praktische Empfehlung

Halten Sie die Idle-Zeit kürzer als das Server-Timeout. So schließen Sie die Verbindung selbst und die Situation „der Server hat geschlossen, aber ich weiß es nicht" entsteht gar nicht erst.

Der Konflikt mit der Rotation

Die Wiederverwendung von Verbindungen steht naturgemäß im Konflikt mit der IP-Rotation: Dieselbe Verbindung zu nutzen bedeutet, auf derselben Ausgangs-IP zu bleiben. Das ist kein Problem, sondern eine Abwägung:

ABBILDUNGPool oder Rotation?
ENTSCHEIDUNGIst es ein Problem, auf derselben IP zu bleiben?Nein, eine Session wird benötigtJAPool auf Maximum einstel…NEINSiehe untenHöchster GeschwindigkeitsgewinnTeilweise – eine Zeit lang dieselbe IP möglichJAPool + periodische Erne…NEINSiehe untenDer AusgleichspunktJa, bei jeder Anfrage ist eine andere IP PflichtJAPool abschaltenNEINGeschwindigkeitskosten akzept…

In den meisten Szenarien ist die zweite Option richtig: Verwenden Sie die Verbindung eine Zeit lang wieder (etwa 30 Anfragen oder 5 Minuten) und erneuern Sie sie dann.

Für Rotationsstrategien zu unserem Beitrag über Rotationseinstellungen können Sie nachlesen.

Zusammenfassung

Keep-Alive und Verbindungspool sind der größte einzelne Hebel für die Proxy-Performance. Erzeugen Sie das Client-Objekt einmal und verwenden Sie es wieder, halten Sie die Poolgröße unter dem Anbieterlimit, stellen Sie die Idle-Zeit kürzer als das Server-Timeout ein und fügen Sie einen einzelnen Wiederholungsversuch hinzu. Wenn Sie Rotation benötigen, ziehen Sie eine periodische Erneuerung dem Abschalten des Pools vor. Für die Messung Ping-Test und Proxy-Check können Sie unsere Tools nutzen.

Häufig gestellte Fragen

01Funktioniert Keep-Alive über einen Proxy?

Ja. Sobald der CONNECT-Tunnel aufgebaut ist, können Sie mehrere Anfragen über denselben Tunnel schicken. Auch beim reinen HTTP-Proxy werden persistente Verbindungen unterstützt.

02Wie wähle ich die Poolgröße?

Halten Sie sie knapp unterhalb des Parallelitätslimits Ihres Anbieters. Überschreiten Sie es, werden zusätzliche Verbindungen aufgebaut und sofort geschlossen, und die Handshake-Kosten verpuffen.

03Die erste Anfrage schlägt fehl, die folgenden funktionieren – warum?

Die Verbindung im Pool wurde möglicherweise vom Server stillschweigend geschlossen. Halten Sie die Idle-Zeit kürzer als das Server-Timeout und fügen Sie einen einzelnen Wiederholungsversuch hinzu.

04Verhindert ein Verbindungspool die IP-Rotation?

Ja, dieselbe Verbindung bleibt auf derselben Ausgangs-IP. Wenn Sie Rotation benötigen, erneuern Sie die Verbindung nach einer bestimmten Anzahl von Anfragen oder nach einer bestimmten Zeit, statt den Pool ganz abzuschalten.

05Was bringt die TLS-Session-Wiederverwendung?

Statt eines vollständigen Handshakes erfolgt ein verkürzter Handshake; typischerweise spart das eine Runde und 40–80 ms. Es genügt, das Client-Objekt wiederzuverwenden.

Verwandte Beiträge und Seiten

NÄCHSTER SCHRITT

Stärken Sie Ihre Proxy-Infrastruktur noch heute.

Starten Sie mit den kostenpflichtigen Paketen in wenigen Minuten oder testen Sie zuerst unsere kostenlose Proxy-Liste.

FREEPROXY.TR

Wenn Sie einen kostenlosen Proxy suchen, sind Sie hier richtig

Eine umfassende Proxy-Plattform: aktuelle kostenlose Proxy-Adressen ansehen, HTTP- und SOCKS-Proxy-Typen vergleichen und Ihre Proxy-Verbindungen mit kostenlosen Tools prüfen.