Ereignisse
Erstellen von KI-Apps und Agents
17. März, 21 Uhr - 21. März, 10 Uhr
Nehmen Sie an der Meetup-Serie teil, um skalierbare KI-Lösungen basierend auf realen Anwendungsfällen mit Mitentwicklern und Experten zu erstellen.
Jetzt registrierenDieser Browser wird nicht mehr unterstützt.
Führen Sie ein Upgrade auf Microsoft Edge durch, um die neuesten Features, Sicherheitsupdates und den technischen Support zu nutzen.
In diesem Artikel erfahren Sie, wie Sie zeitweilige Verbindungsfehler und zugehörige Leistungsprobleme in Azure App Service beheben. Dieses Thema enthält weitere Informationen zu sowie Problembehandlungsmethoden für die Auslastung von SNAT-Ports (Source Network Address Translation). Wenn Sie beim Lesen dieses Artikels feststellen, dass Sie weitere Hilfe benötigen, wenden Sie sich an die Azure-Experten im MSDN Azure-Forum oder im Stack Overflow-Forum. Alternativ dazu können Sie eine Azure-Supportanfrage erstellen. Rufen Sie die Azure-Support-Website auf, und wählen Sie die Option Support erhalten.
Im Azure-App-Dienst gehostete Anwendungen und Funktionen weisen möglicherweise eines oder mehrere der folgenden Symptome auf:
Die Hauptursache für zeitweilig auftretende Verbindungsprobleme ist das Erreichen einer Grenze, während neue ausgehende Verbindungen hergestellt werden. Folgende Grenzwerte können erreicht werden:
Wenn Anwendungen oder Funktionen schnell eine neue Verbindung öffnen, können Sie ihr vorab zugewiesenes Kontingent von 128 Ports schnell erschöpfen. Sie werden dann blockiert, bis ein neuer SNAT-Port verfügbar wird, entweder durch dynamisches Zuweisen weiterer SNAT-Ports oder durch Wiederverwendung eines freigegebenen SNAT-Ports. Wenn Ihre App nicht mehr über SNAT-Ports verfügt, werden zeitweilig Probleme bei ausgehenden Verbindungen auftreten.
Es gibt einige Lösungen, mit denen Sie SNAT-Port-Einschränkungen vermeiden können. Dazu gehören:
Um das SNAT-Port-Problem zu vermeiden, verhindern Sie, dass immer wieder neue Verbindungen zum selben Host und Port aufgebaut werden. Verbindungspools zählen zu den offensichtlicheren Möglichkeiten, dieses Problem zu lösen.
Wenn Ihr Ziel ein Azure-Dienst ist, der Dienstendpunkte unterstützt, können Sie Probleme durch eine Überlastung von SNAT-Ports vermeiden, indem Sie die regionale VNET-Integration und Dienstendpunkte oder private Endpunkte verwenden. Wenn Sie die regionale VNET-Integration verwenden und Endpunkte im Integrationssubnetz platzieren, gelten für den ausgehenden Datenverkehr Ihrer App an diese Dienste keine Einschränkungen für ausgehende SNAT-Ports. Ebenso treten keine Probleme bei ausgehenden SNAT-Ports an dieses Ziel auf, wenn Sie die regionale VNet-Integration und private Endpunkte verwenden.
Wenn Ihr Ziel ein externer Endpunkt außerhalb von Azure ist, erhalten Sie mithilfe eines NAT Gateways 64 KB ausgehende SNAT-Ports. Außerdem erhalten Sie eine dedizierte ausgehende Adresse, die Sie mit niemandem teilen.
Wenn möglich, verbessern Sie Ihren Code für die Verwendung von Verbindungspools, und vermeiden Sie die gesamte Situation. Es ist nicht immer möglich, Code schnell genug zu ändern, um diese Situation zu entschärfen. Wenn Sie den Code nicht rechtzeitig ändern können, nutzen Sie die anderen Lösungen. Die beste Lösung des Problems ist die bestmögliche Kombination aller Lösungen. Versuchen Sie, Dienstendpunkte und private Endpunkte für Azure-Dienste zu verwenden und das NAT Gateway für den Rest.
Allgemeine Strategien zum Verringern der SNAT-Portauslastung finden Sie im Abschnitt zur Problembehebung der Dokumentation Ausgehende Verbindungen von Azure. Von diesen Strategien sind die folgenden anwendbar auf Apps und Funktionen, die im Azure-App-Dienst gehostet werden.
Im Folgenden finden Sie eine Auflistung von Links zum Implementieren von Verbindungspooling nach unterschiedlichem Lösungsstapel.
Standardmäßig werden Verbindungen für Node.js nicht aufrechterhalten. Unten sind die gängigen Datenbanken und Pakete für das Verbindungspooling angegeben, die auch Beispiele zur Implementierung enthalten.
HTTP-Keep-Alive
Unten sind die gängigen Bibliotheken aufgeführt, die für das JDBC-Verbindungspooling verwendet werden und Beispiele für die Implementierung enthalten: JDBC-Verbindungspooling.
HTTP-Verbindungspooling
Von PHP wird Verbindungspooling zwar nicht unterstützt, aber Sie können versuchen, dauerhafte Datenbankverbindungen auf Ihrem Back-End-Server zu verwenden.
MySQL-Server
Weitere Datenquellen
Unten sind die beliebten Datenbanken und Module für das Verbindungspooling mit Beispielen zu deren Implementierung aufgeführt.
HTTP-Verbindungspooling
Die Vermeidung der ausgehenden TCP-Limits lässt sich leichter erreichen, weil die Limits durch die Größe Ihres Workers festgelegt werden. Sie finden die Limits in Numerische Limits für sandboxübergreifende VM: TCP-Verbindungen.
Limitname | BESCHREIBUNG | Klein (A1) | Mittel (A2) | Groß (A3) | Dienstebene „Isoliert“ (ASE) |
---|---|---|---|---|---|
Verbindungen | Anzahl von Verbindungen in der gesamten VM | 1920 | 3968 | 8064 | 16.000 |
Um ausgehende TCP-Limits zu vermeiden, können Sie entweder die Größe Ihres Workers erhöhen oder horizontal erweitern.
Die Kenntnis der beiden Arten von Limits für ausgehende Verbindungen sowie des Verhaltens Ihrer App sollte die Problembehandlung erleichtern. Wenn Sie wissen, dass Ihre App viele Aufrufe an dasselbe Speicherkonto durchführt, könnten Sie ein SNAT-Limit vermuten. Wenn Ihre App viele Aufrufe an Endpunkte über das Internet erstellt, könnten Sie vermuten, dass Sie das VM-Limit erreichen werden.
Wenn Sie das Anwendungsverhalten nicht gut genug kennen, um die Ursache schnell zu ermitteln, gibt es einige Tools und Methoden, die in App Service zur Unterstützung dieser Ermittlungsaufgabe verfügbar sind.
Sie können die App Service-Diagnose verwenden, um SNAT-Portzuordnungsinformationen zu suchen, und die Zuordnungsmetrik von SNAT-Ports für eine App Service-Site beobachten. Gehen Sie wie folgt vor, um SNAT-Portzuordnungsinformationen zu finden:
Da die SNAT-Portauslastung nicht als Metrik verfügbar ist, ist es nicht möglich, entweder automatisch auf Grundlage der SNAT-Portauslastung zu skalieren oder die automatische Skalierung auf Grundlage der SNAT-Portzuordnungsmetrik zu konfigurieren.
TCP-Verbindungen und SNAT-Ports stehen in keinem direkten Zusammenhang. Eine Auslastungserkennung für TCP-Verbindungen befindet sich auf der Verwaltungsseite „Diagnose und Problembehandlung“ jeder App Service-App enthalten. Suchen Sie nach dem Ausdruck „TCP-Verbindungen“, um sie zu finden.
Limitname | BESCHREIBUNG | Klein (A1) | Mittel (A2) | Groß (A3) | Dienstebene „Isoliert“ (ASE) |
---|---|---|---|---|---|
Verbindungen | Anzahl von Verbindungen in der gesamten VM | 1920 | 3968 | 8064 | 16.000 |
Wenn die SNAT-Ports erschöpft sind und WebJobs keine Verbindung mit der SQL-Datenbank herstellen kann, gibt es keine Metrik, die zeigt, wie viele Verbindungen von jedem einzelnen Webanwendungsprozess geöffnet werden. Um den problematischen WebJob zu finden, verschieben Sie mehrere WebJobs in einen anderen App Service-Plan, um festzustellen, ob sich die Situation verbessert, oder ob ein Problem in einem der Pläne bestehen bleibt. Wiederholen Sie den Vorgang, bis Sie den problematischen WebJob gefunden haben.
Ereignisse
Erstellen von KI-Apps und Agents
17. März, 21 Uhr - 21. März, 10 Uhr
Nehmen Sie an der Meetup-Serie teil, um skalierbare KI-Lösungen basierend auf realen Anwendungsfällen mit Mitentwicklern und Experten zu erstellen.
Jetzt registrieren