Hoppa till innehållet
Stackship-dokumentation English

FunktionerAnvändareMaskinöversatt

Skalning och resurser

Hur funktioner vilar och vaknar, hur många replikor de kör, vilken CPU och hur mycket minne de får, och hur du ändrar de inställningarna.

Inställningar som en ny funktion börjar med

Inställning Värde
Minsta antal replikor 0
Största antal replikor 10
Avkylningsperiod 300 sekunder
CPU 0,25 CPU (250m)
Minne 256 MiB (256Mi)

Värdena kommer från plattformen, inte från namnutrymmet — se Namnutrymmets standardvärden.

Skala ned till noll

Med minst 0 replikor:

  • Funktionen vilar, med statusen Sleeping, tills något anropar den. Ett HTTP-anrop eller en timerkörning väcker den: namnutrymmets proxy startar en replik och håller anropet tills repliken är klar, i upp till 30 sekunder. Därefter får anroparen 504.
  • När inget anrop och ingen timerkörning har nått funktionen under dess avkylningsperiod stoppar proxyn repliken igen. Den kontrollerar var 30:e sekund, så en funktion kan köra upp till en halv minut längre än sin avkylningsperiod.
  • En proxy räknar bara de anrop som går genom den själv. Med fler än ett funktionsnamnutrymme i resursgruppen kan ett annat namnutrymmes proxy stoppa en funktion som anropas — se Hur en förfrågan når en funktion.

Det första anropet efter en vila tar så lång tid som funktionen behöver för att starta.

Viktigt

En funktion som byggs från portalen somnar inte om. Efter sin första distribution vilar den till sitt första anrop; därefter håller den en replik igång, med replikens CPU och minne, oavsett avkylningsperiod. Plattformen uppdaterar funktionens status ungefär en gång i minuten och proxyn räknar varje uppdatering som aktivitet, så en avkylningsperiod som är längre än ungefär en minut löper aldrig ut. En funktion som kör en avbild från din egen pipeline påverkas inte: den vilar efter sin avkylningsperiod som beskrivs ovan.

Håll en funktion varm

Med ett minimum över 0 kör funktionen alltid så många replikor och vilar aldrig. Det undviker väntan vid första anropet, till priset av CPU och minne som hålls hela tiden.

Största antal replikor

Plattformen lägger inte till replikor vid hög belastning. En funktion kör sitt minsta antal replikor, eller en enda medan den är vaken när minimum är 0. Maximum sparas och visas, men det får inte en funktion att skala ut.

CPU och minne

En funktions CPU och minne är både dess begäran och dess gräns: den får exakt så mycket. En replik som behöver mer minne än sin gräns stoppas och startas om.

Ändra inställningarna

Portalen har inga fält för en funktions skalning, CPU eller minne. Använd CLI:t, med functions/write:

bash
stsh functions function update my-namespace hello -g my-resource-group \
  --set 'scaling={"minReplicas":1,"maxReplicas":1,"cooldownPeriod":300}' \
  --set 'resources={"cpu":"500m","memory":"512Mi"}'
  • Skicka alla tre skalningsfälten: ett fält som du utelämnar får sitt standardvärde.
  • Minimum måste vara 0 eller mer, maximum minst 1 och inte lägre än minimum.
  • CPU och minne anges som Kubernetes-kvantiteter, till exempel 500m eller 1 för CPU och 512Mi eller 1Gi för minne. Ett värde som inte är en giltig kvantitet avvisas.

Funktionen driftsätts om med de nya inställningarna.

Namnutrymmets standardvärden

Beräkningsplanen och skalningen som du väljer när du skapar ett funktionsnamnutrymme tillämpas inte på dess funktioner i dag. Planen sparas inte alls; skalningen sparas som namnutrymmets standardvärde och visas på dess Översikt, men varje funktion börjar med värdena i Inställningar som en ny funktion börjar med, och att ändra namnutrymmets Konfiguration → Skalning ändrar inte dess funktioner.

Namnutrymmets proxy

Varje funktionsnamnutrymme kör en replik av sin proxy, fnproxy-<namespace>, som begär 0,1 CPU och 128 MiB minne oavsett om namnutrymmet har funktioner eller inte. Den vilar aldrig: det är den som tar emot anrop, väcker vilande funktioner, kör timerscheman och stoppar overksamma funktioner.