Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
GÄLLER FÖR: Alla API Management-nivåer
Den här artikeln hjälper dig att felsöka tillfälliga anslutningsfel och relaterade svarstidsproblem i Azure API Management. Mer specifikt innehåller den här artikeln information och felsökning för överbelastning av SNAT-portar (source network address translation). Om du behöver mer hjälp kontaktar du Azure-experterna på Azure Community Support eller skickar en supportbegäran med Azure Support.
Symtom
Klientprogram som anropar API:er via API Management-tjänsten kan uppvisa ett eller flera av följande symptom:
- Tillfälliga HTTP 500-fel
- Timeout-felmeddelanden
De här symptomen visas som instanser av BackendConnectionFailure i dina Azure Monitor-resursloggar.
På vissa API Management-tjänstnivåer kan du också se diagnostikinformation som rör SNAT-portöverbelastning i Azure-portalen på sidan Diagnostisera och lösa problem>med SNAT-portanalys för din API Management-instans.
Orsak
Det här symtommönstret uppstår ofta på grund av SNAT-portgränser med DIN API Management-tjänst.
När en klient anropar någon av API Management-API:erna öppnar Azure API Management-tjänsten en SNAT-port för att få åtkomst till ditt serverdels-API. Som beskrivs i Utgående anslutningar i Azure använder Azure källnätverksadressöversättning (SNAT) och en lastbalanserare (inte exponerad för kunder) för att kommunicera med slutpunkter utanför Azure i det offentliga IP-adressutrymmet och till slutpunkter som är interna för Azure som inte använder tjänstslutpunkter för virtuellt nätverk. Den här situationen gäller endast serverdels-API:er som exponeras på offentliga IP-adresser.
Varje instans av API Management-tjänsten ges ursprungligen ett förallokerat antal SNAT-portar. Den gränsen påverkar öppnandet av anslutningar till samma värd och portkombination. SNAT-portar används när du har upprepade anrop till samma adress och portkombination. När en SNAT-port har släppts är porten tillgänglig för återanvändning efter behov. Azure-nätverkslastbalanseraren återtar SNAT-portar från stängda anslutningar först efter att ha väntat i fyra minuter.
En snabb följd av klientbegäranden till dina API:er kan uttömma den förallokerade kvoten för SNAT-portar om dessa portar inte stängs och återvinns tillräckligt snabbt, vilket hindrar API Management-tjänsten från att bearbeta klientbegäranden i tid.
Åtgärder och lösningar
Allmänna strategier för att minimera SNAT-portöverbelastning beskrivs i Felsöka fel med utgående anslutningar i Azure Load Balancer-dokumentationen. Av dessa strategier gäller följande för API Management.
Aktivera Azure NAT Gateway
För en virtuell nätverksinmatad instans på Premium-nivån för API Management kan du aktivera Azure NAT Gateway för att tillhandahålla ett större antal SNAT-portar (upp till 64 000) än vad som är tillgängligt som standard i API Management. Om det stöds i ditt scenario är den här lösningen det mest effektiva sättet att undvika SNAT-portöverbelastning.
Om du vill aktivera Azure NAT Gateway i API Management-instansens virtuella nätverk anger du instansens natGatewayState egenskap till enabled med hjälp av API Management Service – Skapa eller uppdatera REST API.
Kommentar
- För närvarande kan instansen
natGatewayStateinte finnas i en zonindelad eller zonredundant konfiguration för att ange egenskapen. - För en instans som matas in i ett virtuellt nätverk i internt läge fungerar NAT-gatewayen endast för utgående trafik till Internet.
- Azure NAT Gateway kan medföra extra kostnader.
Den inaktiva standardtidsgränsen i NAT-gatewayen är 4 minuter. Du kan ändra tidsgränsen för inaktivitet till högst 120 minuter. Mer information finns i Hantera NAT Gateway.
Om du inte kan använda en NAT-gateway för utgående anslutning kan du läsa de andra åtgärdsalternativen som beskrivs i det här avsnittet.
Utöka din API Management-instans
Varje API Management-instans allokeras ett antal SNAT-portar baserat på API Management-enheter. Du kan allokera fler SNAT-portar genom att skala din API Management-instans med fler enheter. Mer information finns i Skala DIN API Management-tjänst.
Kommentar
SNAT-portanvändning är för närvarande inte tillgängligt som mått för API Management-enheter för automatisk skalning.
Använda flera IP-adresser för serverdels-URL:er
Varje anslutning från API Management-instansen till samma mål-IP och målport för serverdelstjänsten använder en SNAT-port för att upprätthålla ett distinkt trafikflöde. Utan olika SNAT-portar för returtrafiken från din bakgrundstjänst kan API Management inte skilja ett svar från ett annat.
Eftersom SNAT-portar kan återanvändas om mål-IP-adressen eller målporten skiljer sig åt, är ett annat sätt att undvika SNAT-portöverbelastning att använda flera IP-adresser för serverdelstjänstens URL:er.
Mer information finns i Utgående proxy Azure Load Balancer.
Placera API Management och serverdelstjänsten i samma virtuella nätverk
Om serverdels-API:et finns på en Azure-tjänst som stöder tjänstslutpunkter , till exempel App Service, kan du undvika problem med SNAT-portöverbelastning genom att placera din API Management-instans och serverdelstjänst i samma virtuella nätverk och exponera den via tjänstslutpunkter eller privata slutpunkter. När du använder ett gemensamt virtuellt nätverk och placerar tjänstslutpunkter i integrationsundernätet kringgår utgående trafik från API Management-instansen till dessa tjänster Internet, vilket undviker SNAT-portbegränsningar. På samma sätt har du inga problem med utgående SNAT-portar till det målet om du använder ett virtuellt nätverk och privata slutpunkter.
Mer information finns i Använda Azure API Management med virtuella nätverk och Integrera App Service med ett virtuellt Azure-nätverk.
Placera DIN API Management-tjänst i ett virtuellt nätverk och dirigera utgående anrop till Azure Firewall
På samma sätt som när du placerar API Management- och serverdelstjänster i ett virtuellt nätverk kan du använda Azure Firewall i ett virtuellt nätverk med din API Management-tjänst och sedan dirigera utgående API Management-anrop till Azure Firewall. Mellan API Management och Azure Firewall (när de placeras i samma virtuella nätverk) krävs inga SNAT-portar. För SNAT-anslutningar till dina serverdelstjänster har Azure Firewall 64 000 tillgängliga portar, vilket är mycket högre än vad som allokeras till API Management-instanser.
Mer information finns i Dokumentation om Azure Firewall .
Överväg cachelagring av svar och annan prestandajustering för serverdelen
En annan möjlig åtgärd är att förbättra bearbetningstiderna för dina serverdels-API:er. Ett sätt att göra detta är genom att konfigurera vissa API:er med cachelagring av svar för att minska svarstiden mellan klientprogram som anropar ditt API och din API Management-serverdelsbelastning.
Mer information finns i Lägga till cachelagring för att förbättra prestanda i Azure API Management.
Överväg att implementera principer för åtkomstbegränsning
Om det passar för ditt affärsscenario kan du implementera principer för åtkomstbegränsning för din API Management-produkt. Till exempel kan principen rate-limit-by-key användas för att förhindra API-användningstoppar per nyckel genom att begränsa anropsfrekvensen per angiven tidsperiod.
Mer information finns i Principer för hastighetsbegränsning och kvoter .