How to efficiently scale push notifications to 60k concurrent users

Saurabh Singh 0 Reputation points
2023-08-11T09:35:41.59+00:00

Hello Everyone,

I have 50-60k online users who are using our Chrome extension. Currently, we were using a pull mechanism to update the notifications. Now we are planning to move from pull to push to reduce the load from the API Servers.

We thought of instead using our own Signal R server we can utilize the Azure Signal R service but when I reviewed the pricing it is costing 1000 concurrent users for 1 unit which is $60 if I choose the premium tier for autoscaling.

Mostly the connections will be idle until the admin sends the notifications, It's a B2B setup. Here is the design which we are implementing, now the problem is if I need to support 50k concurrent users it is going to cost $3000 in one region which is huge for us. We have set up the autoscale for cost management

  1. Autoscale only office hours and then scale down. The default will be 5
  2. Scale when the server load is more than 70%Notifications

The second approach I can think of using Signal R on scaled app services or virtual machines and using the Service bus as a backplane. all the platform management we have to do, which we were avoiding.

.NET Threadpool and ASP.NET Settings

The maxConcurrentRequestsPerCPU setting specifies how many simultaneous requests ASP.NET allows per CPU. This setting is different depending on the size of the virtual machine configured.

 If 1 VM can support 20000 concurrent requests, it's making more sense to align with this and scale the boxes according to the load.

maxConcurrentRequestsPerCpu7500750018750Number of Cores124Actual MaxConcurrentRequestsValue75001500075000Please provide your input.

Azure SignalR Service
Azure SignalR Service
An Azure service that is used for adding real-time communications to web applications.
122 questions
{count} votes

1 answer

Sort by: Most helpful
  1. ajkuma 22,851 Reputation points Microsoft Employee
    2023-09-09T19:26:44.52+00:00

    To benefit the community, summarizing/following up from offline/case discussion:

     

    As per Azure SignalR pricing link: Azure SignalRService Pricing | Microsoft Azure (at this time of answer)

    Consider your example: 50 units at $0.084/unit/hour + each user receives 2 messages every day.

    Message count 50k*2 =100k ( *did not exceed free message allowance)

    For Premium tier, 2$ per Unit per day, is same as 0.083333 (~ 0.084)$ per Unit per hour || Hence cost is: 0.084 * #units * #Hours

    User's image

    Note: Prices are estimates only (for the example) and are not intended as actual price quotes.
    Depending on the scenario/linked resources usage, there may be associated resource cost.
    You may always connect with our Billing team (free) for any questions' on charges.

    0 comments No comments