top of page

Cloud performance and scalability. Azure Service Bus and Azure Durable functions - part 2

  • May 26, 2023
  • 3 min read

Updated: Jun 11, 2023

This is the continuation of an article I have written last month you can find it here: https://www.ideliversoft.com/post/cloud-performance-and-scalability-1


I have measured the performance of the Azure durable functions for these configurations:

  1. Creating an app service scale out plan - manual scale.

  2. Creating an app service scale out plan - custom scale.

  3. Configuring the durable functions parameters for the task hub.

  4. Running it on a consumption plan.

  5. Running it on a premium plan.

and using the following loads:

šš‚šš–ššŠšš•šš• šš•šš˜ššŠšš:

  • šŸ·šŸ¶ ššššžšš—ššŒšššš’šš˜šš—ššœ šš” šŸ·šŸ¶ ššŠššŒšššš’ššŸšš’šššš’ššŽššœ šš” šŸ·šŸ¶ ššœššŽššŒšš˜šš—ššššœ ššŽššŠššŒšš‘ ššŠššŒšššš’ššŸšš’šššš¢

š™¼ššŽšššš’ššžšš– šš•šš˜ššŠšš:

  • šŸ·šŸ¶ ššššžšš—ššŒšššš’šš˜šš—ššœ šš” šŸ·šŸ¶šŸ¶ ššŠššŒšššš’ššŸšš’šššš’ššŽššœ šš” šŸ·šŸ¶ ššœššŽššŒšš˜šš—ššššœ ššŽššŠššŒšš‘ ššŠššŒšššš’ššŸšš’šššš¢ šš˜šš›

  • šŸ·šŸ¶šŸ¶ ššššžšš—ššŒšššš’šš˜šš—ššœ šš” šŸ·šŸ¶ ššŠššŒšššš’ššŸšš’šššš’ššŽššœ šš” šŸ·šŸ¶ ššœššŽššŒšš˜šš—ššššœ šš™ššŽšš› ššŠššŒšššš’ššŸšš’šššš¢

š™·šš’šššš‘ šš•šš˜ššŠšš:

  • šŸ·šŸ¶ ššššžšš—ššŒšššš’šš˜šš—ššœ šš” šŸ·šŸ¶šŸ¶šŸ¶ ššŠššŒšššš’ššŸšš’šššš’ššŽššœ šš” šŸ·šŸ¶ ššœššŽššŒšš˜šš—ššššœ ššŽššŠššŒšš‘ ššŠššŒšššš’ššŸšš’šššš¢ šš˜šš›

  • šŸ·šŸ¶šŸ¶šŸ¶ ššššžšš—ššŒšššš’šš˜šš—ššœ šš” šŸ·šŸ¶ ššŠššŒšššš’ššŸšš’šššš’ššŽššœ šš” šŸ·šŸ¶ ššœššŽššŒšš˜šš—ššššœ šš™ššŽšš› ššŠššŒšššš’ššŸšš’šššš¢


Automatic scaling - scale out the App Service Plan

As with all Azure Functions running in the Consumption and Elastic Premium plans, Durable Functions supports auto-scale via the Azure Functions scale controller.


The Scale Controller monitors how long messages and tasks have to wait before they are processed. Based on these latencies it can decide whether to add or remove workers.


You can read more about it here:


Scaling the number of VM instances


The app service plan can be scaled out by increasing the number of VM machines instances on which the functions executes.

The instance count slider can be set to a value between 1 to 30 for the p2v2 app service plan.


Custom scaling plan using metrics for the Azure durable function's storage account's queues


You can create a custom autoscale plan and define a number of rules for each control or worker-item queue.

Each rule will increase or decrease the VM instances count based on several metric thresholds.

The number of scaled out / in instances during processing the load.



Findings

1)

š™° šš‹ššŠššœššŽšš•šš’šš—ššŽ ššŽšš”ššŽššŒššžšššš’šš˜šš—, šš›ššžšš—šš—šš’šš—šš šš šš’šššš‘ ššššŽššššŠššžšš•šš ššŸššŠšš•ššžššŽššœ šš’šš— šššš‘ššŽ šš‘šš˜ššœšš.šš“ššœšš˜šš— šššš’šš•ššŽ ššŠšš—šš šš—šš˜ ššœššŒššŠšš•šš’šš—šš šššš˜šš—ššŽ šššš˜šš› šššš‘ššŽ ššŠšš™šš™ ššœššŽšš›ššŸšš’ššŒššŽ šš™šš•ššŠšš— šš™šš›šš˜ššššžššŒššŽššœ šššš‘ššŽ šššš˜šš•šš•šš˜šš šš’šš—šš šš›ššŽššœššžšš•ššššœ:


Consumption plan

  • ššœšš–ššŠšš•šš• šš•šš˜ššŠšš - šŸ·:šŸ¹šŸ¹šš–šš’šš—ššœ

  • šš–ššŽšššš’ššžšš– šš•šš˜ššŠšš

    • ššššŽššœšš šŸ· (šŸ·šŸ¶ ššššžšš—ššŒšššš’šš˜šš—ššœ šš” šŸ·šŸ¶šŸ¶ ššŠššŒšššš’ššŸšš’šššš’ššŽššœ šš” šŸ·šŸ¶ ššœššŽššŒšš˜šš—ššššœ) - šŸ»:šŸøšŸø šš–šš’šš—ššœ

    • ššššŽššœšš šŸø (šŸ·šŸ¶šŸ¶ ššššžšš—ššŒšššš’šš˜šš—ššœ šš” šŸ·šŸ¶ ššŠššŒšššš’ššŸšš’šššš’ššŽššœ šš” šŸ·šŸ¶ ššœššŽššŒšš˜šš—ššššœ) - šŸø:šŸ»šŸ» šš–šš’šš—ššœ

  • šš‘šš’šššš‘ šš•šš˜ššŠšš

    • ššššŽššœšš šŸ· - šŸ·šŸ¼:šŸøšŸæ šš–šš’šš—ššœ

    • ššššŽššœšš šŸø - šŸ¾:šŸ¶šŸø šš–šš’šš—ššœ


2)

šš†šš‘ššŽšš— šš›ššžšš—šš—šš’šš—šš šš’šš— š™²šš˜šš—ššœššžšš–šš™šššš’šš˜šš— šš™šš•ššŠšš—, šš’šš—ššŒšš›ššŽššŠššœšš’šš—šš šššš‘ššŽ šš–ššŠšš”š™²šš˜šš—ššŒššžšš›šš›ššŽšš—ššš™°ššŒšššš’ššŸšš’šššš¢š™µššžšš—ššŒšššš’šš˜šš—ššœ ššŠšš—šš šš–ššŠšš”š™²šš˜šš—ššŒššžšš›šš›ššŽšš—ššš™¾šš›ššŒšš‘ššŽššœšššš›ššŠšššš˜šš›š™µššžšš—ššŒšššš’šš˜šš—ššœ ššŸššŠšš•ššžššŽššœ šššš›šš˜šš–šŸ·šŸ¶ šššš˜ šŸ·šŸ¶šŸ¶ šššš˜ šŸ·šŸ¶šŸ¶šŸ¶ š–Žš–“ š–™š–š–Š š–š–”š–˜š–™.š–š–˜š–”š–“ š–‹š–Žš–‘š–Š, šššš˜ššŽššœ šš—šš˜šš šš™šš›šš˜ššŸšš’ššššŽ ššŠ šš™šš›šš˜šš™šš˜šš›šššš’šš˜šš—ššŠšš• ššŽšš”ššŽššŒššžšššš’šš˜šš— šššš’šš–ššŽ šš’šš–šš™šš›šš˜ššŸššŽšš–ššŽšš—šš šš–šš˜ššœšš šš•šš’šš”ššŽšš•šš¢ ššššžššŽ šššš˜ šššš‘ššŽ ššššŠššŒšš šššš‘ššŠšš šššš‘ššŽ šš—ššžšš–šš‹ššŽšš› šš˜šš ššŒšš˜šš—ššŒššžšš›šš›ššŽšš—šš ššššžšš—ššŒšššš’šš˜šš—ššœ ššŠšš—šš ššŠššŒšššš’ššŸšš’šššš’ššŽššœ ššŠšš›ššŽ šššš’šš”ššŽšš (ššœššŽššŽ šššš‘ššŽ šš™šš›ššŽššŸšš’šš˜ššžššœ ššŠšš›šššš’ššŒšš•ššŽ).


3)

šš†šš‘ššŽšš— šš›ššžšš—šš—šš’šš—šš šš’šš— šššš‘ššŽ š™³ššŽšššš’ššŒššŠššššŽšš šš˜šš› š™æšš›ššŽšš–šš’ššžšš– š™æšš•ššŠšš— ššœššŽšššššš’šš—šš ššžšš™ šššš‘ššŽ šš™ššŠšš›ššŠšš–ššŽššššŽšš›ššœ šš’šš— šššš‘ššŽ šš‘šš˜ššœšš.šš“ššœšš˜šš— šššš’šš•ššŽ šš˜šš› ššœššŒššŠšš•šš’šš—šš šš˜ššžšš šššš‘ššŽ ššŠšš™šš™ ššœššŽšš›ššŸšš’ššŒššŽ šš™šš•ššŠšš— ššŠšš›ššŽ šš™šš›šš˜ššŸšš’šššš’šš—šš ššŠ šš™šš›šš˜šš™šš˜šš›šššš’šš˜šš—ššŠšš• šššš’šš–ššŽ šš’šš–šš™šš›šš˜ššŸššŽšš–ššŽšš—šš.

š™µšš˜šš› ššŠ premium plan baseline ššŽšš”ššŽššŒššžšššš’šš˜šš— šššš‘šš˜ššžšššš‘, šš›ššžšš—šš—šš’šš—šš šš šš’šššš‘ ššššŽššššŠššžšš•šš ššŸššŠšš•ššžššŽššœ šš’šš— šššš‘ššŽ šš‘šš˜ššœšš.šš“ššœšš˜šš— šššš’šš•ššŽ ššŠšš—šš ššŠ ššœšš’šš—šššš•ššŽ šš…š™¼ šš’šš—ššœššššŠšš—ššŒššŽ, šššš‘ššŽ šš›ššŽššœššžšš•ššššœ šššš˜šš› ššŠ šš‘šš’šššš‘ šš•šš˜ššŠšš ššŠšš›ššŽ šš›ššŽššŠšš•šš•šš¢ šš‹ššŠšš:

  • ššœšš–ššŠšš•šš• šš•šš˜ššŠšš : šŸ·:šŸ¹šŸ½ šš–šš’šš—ššœ

  • šš–ššŽšššš’ššžšš– šš•šš˜ššŠšš: ššššŽššœšš šŸ· - šŸ·šŸ¼:šŸŗšŸ» šš–šš’šš—ššœ

  • šš–ššŽšššš’ššžšš– šš•šš˜ššŠšš: ššššŽššœšš šŸø - šŸ·šŸ¼:šŸ¹šŸŗ šš–šš’šš—ššœ

  • šš‘šš’šššš‘ šš•šš˜ššŠšš: ššššŽššœšš šŸ· - šŸ»šŸ»:šŸ¹šŸø šš–šš’šš—ššœ

  • šš‘šš’šššš‘ šš•šš˜ššŠšš: ššššŽššœšš šŸø - šŸ¹šŸæšŸ» ššššžšš—ššŒšššš’šš˜šš—ššœ ššŒšš˜šš–šš™šš•ššŽššššŽšš šš˜ššžšš šš˜šš šŸ·šŸ¶šŸ¶šŸ¶ šš’šš— šŸ¼šŸ» šš–šš’šš—ššœ

4)

šš†šš‘ššŽšš— šš›ššžšš—šš—šš’šš—šš šš šš’šššš‘ ššŠ ššŒšš˜šš–šš‹šš’šš—ššŽšš ššŒšš˜šš—šššš’ššššžšš›ššŠšššš’šš˜šš— - ššŒššžššœšššš˜šš– ššœššŒššŠšš•šš’šš—šš ššœššŽšš ššžšš™ šš˜šš— ššŠ š™æšš›ššŽšš–šš’ššžšš– š™æšš•ššŠšš— šš šš’šššš‘ ššŒššžššœšššš˜šš– šš™ššŠšš›ššŠšš–ššŽššššŽšš›ššœ ššŒšš˜šš—šššš’ššššžšš›ššŽšš šš’šš— šššš‘ššŽ šš‘šš˜ššœšš.šš“ššœšš˜šš— - šššš‘ššŽ šš›ššŽššœššžšš•ššššœ šššš˜šš› šš‘šš’šššš‘ šš•šš˜ššŠšš ššŽšš”ššŒššŽššŽšš šš–šš¢ ššŽšš”šš™ššŽššŒššššŠšššš’šš˜šš—ššœ šš™šš›šš˜ššŸšš’šššš’šš—šš šššš‘ššŽ šš‹ššŽššœšš šš›ššŽššœššžšš•ššššœ, šš šš’šššš‘šš’šš— šŸ· šš–šš’šš—ššžššššŽ šš˜šš› šš•ššŽššœššœ šššš˜šš› šššš‘ššŽ šš šš‘šš˜šš•ššŽ šš™šš›šš˜ššŒššŽššœššœ (šššš‘ššŠšš šš’ššœ, šš›ššžšš—šš—šš’šš—šš šŸ·šŸ¶ ššššžšš—ššŒšššš’šš˜šš—ššœ šš” šŸ·šŸ¶šŸ¶šŸ¶ ššŠššŒšššš’ššŸšš’šššš’ššŽššœ šš” šŸ·šŸ¶ ššœššŽššŒšš˜šš—ššššœ ššŽššŠššŒšš‘ ššŠššŒšššš’ššŸšš’šššš¢ šš˜šš› šŸ·šŸ¶šŸ¶šŸ¶ ššššžšš—ššŒšššš’šš˜šš—ššœ šš” šŸ·šŸ¶ ššŠššŒšššš’ššŸšš’šššš’ššŽššœ šš” šŸ·šŸ¶ ššœššŽššŒšš˜šš—ššššœ šš™ššŽšš› ššŠššŒšššš’ššŸšš’šššš¢).


Function timeout

One of the reasons the functions needs to be well tuned and have a fast execution is because they have a limited duration span.

The whole process should run in less than 10 minutes for the Consumption Plan and less than 60 mins on the Premium Plan.



In the next article, that will be the last part of this series, I will provide a few tips recommended by Microsoft for configuring the Azure Durable functions values in the host.json file.

Recent Posts

See All

Comments


  • Facebook profile
  • Twitter profile
  • LinkedIn Profile

©2020 by PlanetIT. Proudly created with Wix.com

bottom of page