Eseményvezérelt skálázás a Azure Functions

A Használati és Prémium csomagokban Azure Functions skálázza a processzor- és memóriaerőforrásokat a Functions-gazdagép további példányainak hozzáadásával. A példányok számát a függvényt kiváltó események száma határozza meg.

A Használati csomagBan a Functions-gazdagép minden példánya korlátozott, általában 1,5 GB memóriára és egy CPU-ra. A gazdagép egy példánya a teljes függvényalkalmazás, ami azt jelenti, hogy a függvényalkalmazáson belüli összes függvény megosztja az erőforrást egy példányon belül, és egyszerre méretezhető. Azok a függvényalkalmazások, amelyek azonos használati terven osztoznak, egymástól függetlenül skálázhatók. A Prémium csomagban a csomag mérete határozza meg a csomagban lévő összes alkalmazás számára elérhető memóriát és processzort az adott példányon.

A függvénykódfájlok Azure Files megosztásokon vannak tárolva a függvény fő tárfiókjában. A függvényalkalmazás fő tárfiókjának törlésekor a függvénykódfájlok törlődnek, és nem állíthatók helyre.

Futtatókörnyezeti skálázás

Azure Functions a skálázási vezérlő nevű összetevőt használja az események sebességének figyelésére, és annak meghatározására, hogy felskálázást vagy skálázást szeretne-e végezni. A skálázásvezérlő heurisztikus módszert használ mindegyik triggertípushoz. Ha például egy Azure Queue Storage-eseményindítót használ, az célalapú skálázást használ.

A Azure Functions skálázási mértékegysége a függvényalkalmazás. A függvényalkalmazás felskálázása után a rendszer több erőforrást foglal le a Azure Functions gazdagép több példányának futtatásához. Ezzel szemben a számítási igény csökkenésével a skálázási vezérlő eltávolítja a függvénygazdapéldányokat. A példányok száma végül "felskálázva" lesz, ha egy függvényalkalmazásban nem fut függvény.

Skálázásvezérlő monitorozási eseményei és példányok létrehozása

Hidegindítás

Miután a függvényalkalmazás néhány percig tétlen volt, a platform skálázhatja azoknak a példányoknak a számát, amelyeken az alkalmazás nullára fut. A következő kéréshez hozzáadódik a skálázás késése nulláról egyre. Ezt a késést hidegindításnak nevezzük. A függvényalkalmazás által igényelt függőségek száma hatással lehet a hideg kezdési időpontra. A hidegindítás nagyobb problémát jelent a szinkron műveleteknél, például a HTTP-eseményindítóknál, amelyeknek választ kell adniuk. Ha a hidegindítás hatással van a függvényekre, érdemes lehet prémium csomagban vagy dedikált csomagban futni, ha engedélyezve van az Always on beállítás.

A skálázási viselkedés ismertetése

A skálázás több tényezőtől függően változhat, és az alkalmazások a kiválasztott eseményindítóktól és nyelvtől függően eltérően méretezhetők. A skálázási viselkedésnek van néhány bonyolultsága, amelyeket figyelembe kell vennie:

  • Maximális példányok: Egyetlen függvényalkalmazás csak a csomag által megengedett maximumra skálázható fel. Egyetlen példány egyszerre több üzenetet vagy kérést is feldolgozhat, így nincs beállított korlát az egyidejű végrehajtások számára. Igény szerint megadhat egy alacsonyabb maximumot a szabályozáshoz.
  • Új példányszám: HTTP-eseményindítók esetén az új példányok legfeljebb másodpercenként egyszer lesznek lefoglalva. Nem HTTP-eseményindítók esetén az új példányok legfeljebb 30 másodpercenként lesznek lefoglalva. A skálázás gyorsabb, ha prémium csomagban fut.
  • Célalapú skálázás: A célalapú skálázás gyors és intuitív skálázási modellt biztosít az ügyfelek számára, és jelenleg a Service Bus-üzenetsorok és -témakörök, a tárolási üzenetsorok, az Event Hubs és a Cosmos DB-bővítmények esetében támogatott. Ellenőrizze a célalapú skálázást a skálázási viselkedésük megértéséhez.

Vertikális felskálázás korlátozása

Előfordulhat, hogy korlátozni szeretné az alkalmazások által a felskálázáshoz használt példányok maximális számát. Ez leggyakrabban olyan esetekben fordul elő, amikor egy alsóbb rétegbeli összetevő, például egy adatbázis korlátozott átviteli sebességgel rendelkezik. A Használati terv függvényei alapértelmezés szerint akár 200 példányra is felskálázhatók, a Prémium csomag függvényei pedig akár 100 példányra is felskálázhatók. Az érték módosításával functionAppScaleLimit alacsonyabb maximumot adhat meg egy adott alkalmazáshoz. A functionAppScaleLimit érték beállítható korlátlan értékre 0 , null vagy az alkalmazás és az alkalmazás közötti 1 érvényes értékre.

az resource update --resource-type Microsoft.Web/sites -g <RESOURCE_GROUP> -n <FUNCTION_APP-NAME>/config/web --set properties.functionAppScaleLimit=<SCALE_LIMIT>
$resource = Get-AzResource -ResourceType Microsoft.Web/sites -ResourceGroupName <RESOURCE_GROUP> -Name <FUNCTION_APP-NAME>/config/web
$resource.Properties.functionAppScaleLimit = <SCALE_LIMIT>
$resource | Set-AzResource -Force

Skálázási viselkedések

Az eseményvezérelt skálázás automatikusan csökkenti a kapacitást, ha csökken a függvények iránti kereslet. Ehhez állítsa le a függvényalkalmazás feldolgozópéldányait. A példány leállítása előtt a rendszer nem küld új eseményeket a példánynak. Emellett a jelenleg végrehajtó függvények is kapnak időt a végrehajtás befejezésére. Ezt a viselkedést a rendszer ürítési módként naplózza. Ez a leállítási időszak a Használati csomag alkalmazásai esetében akár 10 percet, a Prémium csomag alkalmazásai esetében pedig akár 60 percet is igénybe vehet. Az eseményvezérelt skálázás és ez a viselkedés nem vonatkozik a dedikált csomagbeli alkalmazásokra.

A következő szempontok vonatkoznak a vertikálisan felskálázási viselkedésekre:

  • A Windows rendszeren futó Használatalapú csomag függvényalkalmazások esetében alapértelmezés szerint csak a 2021 májusa után létrehozott alkalmazásoknál engedélyezve van a kiürítési mód.
  • A Service Bus-eseményindítót használó függvények kecses leállításának engedélyezéséhez használja a Service Bus-bővítmény 4.2.0-s vagy újabb verzióját.

Ajánlott eljárások és minták méretezhető alkalmazásokhoz

A függvényalkalmazásoknak számos olyan aspektusa van, amely befolyásolja a skálázást, beleértve a gazdagép konfigurációját, a futásidejű erőforrásigényt és az erőforrás-hatékonyságot. További információt a teljesítményproblémákról szóló cikk skálázhatósági szakaszában talál. Azt is tudnia kell, hogyan viselkednek a kapcsolatok a függvényalkalmazás méretezésekor. További információ: Kapcsolatok kezelése Azure Functions.

A Python és Node.js skálázásával kapcsolatos további információkért lásd: Azure Functions Python fejlesztői útmutató – Skálázás és egyidejűség és Azure Functions Node.js fejlesztői útmutató – Skálázás és egyidejűség.

Számlázási modell

A különböző csomagok számlázását részletesen a Azure Functions díjszabási oldalán ismertetjük. A használat a függvényalkalmazás szintjén van összesítve, és csak a függvénykód végrehajtásának idejét számítja ki. A számlázáshoz a következő egységek tartoznak:

  • Erőforrás-felhasználás gigabájt másodpercben (GB-s). A függvényalkalmazásban lévő összes függvény memóriaméretének és végrehajtási idejének kombinációjaként számítva.
  • Végrehajtások. Megszámolva minden alkalommal, amikor egy függvényt egy eseményindítóra válaszul hajtanak végre.

A használati számla megismerésére vonatkozó hasznos lekérdezések és információk a számlázással kapcsolatos gyakori kérdések között találhatók.

Következő lépések

További tudnivalókért olvassa el a következő cikket: