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:
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
500meller1för CPU och512Mieller1Gifö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.