Ein Azure-Netzwerkdienst zum Bereitstellen privater Netzwerke und (optional) zum Herstellen einer Verbindung mit lokalen Rechenzentren.
Hallo @Sebastian Richter
Vielen Dank, dass Sie sich an Microsoft Q&A gewandt haben.
Basierend auf der Problembeschreibung tritt das Verhalten aufgrund von Einschränkungen bei ausgehenden Verbindungen in Azure auf, insbesondere im Zusammenhang mit der Erschöpfung von Source Network Address Translation (SNAT)-Ports. Wenn Azure‑Ressourcen (z. B. App Services, Function Apps, virtuelle Maschinen oder Console/Kudu‑Umgebungen) wiederholt ausgehende Aufrufe an denselben externen REST‑API‑Endpunkt durchführen, verwendet Azure eine begrenzte Anzahl von SNAT‑Ports, um diese Verbindungen herzustellen. Wenn die Anwendung oder die Konsole häufig neue TCP‑Verbindungen öffnet (beispielsweise durch mehrfaches Ausführen von curl, ohne bestehende Verbindungen wiederzuverwenden), können diese Ports erschöpft werden. Sobald das SNAT‑Port‑Limit erreicht ist, kann Azure keine neuen ausgehenden Verbindungen mehr aufbauen. Dies führt zu intermittierenden Fehlern wie „Recv failure: Connection was reset“, „connection forcibly closed by the remote host“ oder zu zeitabhängigen Verbindungsabbrüchen. Dieses Verhalten tritt ausschließlich bei Azure‑Ressourcen auf, da lokale Rechner nicht denselben ausgehenden SNAT‑Beschränkungen unterliegen. Zusätzlich finden SNAT‑bedingte Fehler auf der Azure‑Netzwerkschicht statt, weshalb keine Anwendungsprotokolle erzeugt werden. Das Problem wird in der Regel dann sichtbar, wenn das Anfragevolumen steigt, sich Anfrage‑ oder Verbindungsdauerverhalten ändert oder die Last zunimmt, auch wenn die Konfiguration zuvor problemlos funktioniert hat.
Bitte beachten Sie die folgenden Punkte zur Behebung dieses Problems bzw. als Workaround:
Verwendung eines Azure NAT Gateways für ausgehende Verbindungen Die Konfiguration eines NAT Gateways für das Subnetz, in dem Ihre Azure‑Ressourcen laufen, erhöht die verfügbare Anzahl an SNAT‑Ports erheblich. Dies ist die empfohlene Lösung für Szenarien mit häufigen ausgehenden Aufrufen zu demselben externen Endpunkt und hilft, zufällige Verbindungsabbrüche aufgrund von SNAT‑Erschöpfung zu vermeiden.
Wiederverwendung ausgehender Verbindungen und Vermeidung häufiger neuer TCP‑Verbindungen Aktivieren Sie nach Möglichkeit die Wiederverwendung von Verbindungen oder Keep‑Alive‑Mechanismen, anstatt für jede Anfrage eine neue Verbindung aufzubauen. Zu Testzwecken sollte vermieden werden, mehrere eigenständige curl‑Befehle in kurzer Zeit über die Azure‑Konsole auszuführen, da jede Ausführung eine neue TCP‑Verbindung erstellt und SNAT‑Ports verbraucht.
Skalierung von Azure‑Ressourcen oder Verteilung des ausgehenden Datenverkehrs Durch das horizontale Skalieren (Scale‑Out) Ihrer App Services oder Workloads erhöht sich die insgesamt verfügbare Anzahl an SNAT‑Ports über alle Instanzen hinweg. Dadurch sinkt die Wahrscheinlichkeit einer Port‑Erschöpfung bei hohem ausgehendem Datenverkehr.
Verwendung von VNet‑Integration mit privaten Endpunkten (falls zutreffend) Wenn die Ziel‑REST‑API über einen privaten Endpunkt oder einen Service‑Endpoint innerhalb eines virtuellen Netzwerks erreichbar ist, kann der ausgehende Datenverkehr SNAT‑Mechanismen umgehen. Dadurch werden die genannten Einschränkungen vermieden und die Stabilität der Verbindung verbessert.