Felsöka tidsgränser för klientsvar och fel med API Management

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 natGatewayState inte 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 .