top of page

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

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


bottom of page