Prestandamått för durable Task Scheduler-åtgärdsflöde

I interna riktmärken bearbetade Durable Task Scheduler arbetsobjekt ungefär fem gånger snabbare än Azure Storage-leverantören, den vanligaste backend för Durable Functions-appar.

En åtgärd är alla diskreta åtgärder som bearbetas av schemaläggaren, till exempel att starta en orkestrering, schemalägga en aktivitet eller hantera en timer. Fullständig definitions- och faktureringsinformation finns i Vad är en åtgärd?

Benchmark-resultat

Durable Task Scheduler har jämförts med andra lagringsleverantörer, inklusive Azure Storage-, MSSQL- och Netherite-leverantörerna. Resultaten visar att Durable Task Scheduler ger bättre dataflöde för åtgärder än de andra alternativen, vilket innebär att fler orkestrerings-, entitets- och aktivitetsuppgifter bearbetas under en viss tidsperiod.

Följande diagram visar arbetsobjekt som bearbetas per sekund för Durable Task Scheduler jämfört med den Azure Storage providern för olika antal arbetare. Azure Storage-leverantören valdes som jämförelse eftersom det är standardvalet och den vanligaste lösningen för Durable Functions-appar.

Bar-diagram som jämför arbetsobjekt per sekund mellan Durable Task Scheduler och Azure Storage provider mellan 1, 2 och 4 EP2-arbetare. Durable Task Scheduler når cirka 1 400, 2 750 respektive 3 750 arbetsobjekt per sekund.

I följande tabell sammanfattas de numeriska dataflödesvärdena från riktmärket:

Konfiguration Azure Storage (arbetsobjekt/sek) Durable Task Scheduler (arbetsuppgifter/sek) Speedup
EP2, 1 arbetare ~250 ~1 400 ~5,6×
EP2, 2 arbetare ~430 ~2 750 ~6,4 x
EP2, 4 arbetare ~830 ~3 750 ~4,5 x

Anmärkning

Dessa resultat är från ett internt riktmärke och är avsedda att ge en grov jämförelse av relativa prestanda. Dina resultat varierar beroende på arbetsbelastningens egenskaper.

Benchmark-metodik

För att testa den relativa kapaciteten hos leverantörer för backend kördes dessa jämförelsetester med hjälp av en standardorkestreringsfunktion som anropar fem aktivitetsfunktioner, en för varje stad, i sekvens. Varje aktivitet returnerar helt enkelt strängvärdet "Hello, {cityName}!" och utför inget annat arbete.

Avsikten med riktmärket är att mäta belastningen för varje backend utan att göra något för komplicerat. Den här typen av sekventiell orkestrering valdes på grund av dess likhet i funktionsappar som innehåller Durable Functions.

Testinformation

Testet består av följande kriterier:

  • Funktionsappen som används för det här testet körs på en till fyra Elastic Premium EP2-instanser.
  • Orkestreringskoden skrevs i C# med hjälp av .NET:s isolerade arbetarmodell på .NET 8.
  • Samma app användes för alla lagringsleverantörer, och den enda ändringen var konfigurationen av backend-lagringsleverantören.
  • Testet utlöses med en HTTP-utlösare som startar 5 000 orkestreringar samtidigt.

När testet är klart beräknas genomströmningen genom att det totala antalet slutförda orkestreringar divideras med den totala exekveringstiden. Testet kördes flera gånger för varje konfiguration av lagringsprovidern för att säkerställa att resultaten var konsekventa.

Faktorer som påverkar dina resultat

Dina resultat kan variera beroende på:

  • Komplexiteten i dina orkestreringar och aktiviteter
  • Antalet orkestreringar som körs samtidigt
  • Storleken på de datapaket som skickas mellan orkestreringar och aktiviteter
  • Den virtuella datorns storlek och SKU
  • Nätverksfördröjning mellan din beräkning och schemaläggaren

Anmärkning

Dessa benchmarktester kördes internt av Microsoft och är inte tillgängliga som en fristående testmiljö. De är avsedda att ge dig en allmän känsla av relativ prestanda när du väljer en lagringsserverdel.

Nästa steg