Opened 17 months ago

Last modified 40 hours ago

#25598 new enhancement

Let the broker inform proxies how often to poll

Reported by: dcf Owned by:
Priority: Medium Milestone:
Component: Circumvention/Snowflake Version:
Severity: Normal Keywords: starter
Cc: dcf, arlolra, Samdney Actual Points:
Parent ID: Points:
Reviewer: Sponsor:

Description

Currently, proxies poll the broker at a static rate of once every 5–10 seconds. If we're anticipating thousands of proxies, we don't need them to poll so frequently.

The broker could instead tell each proxy how long to wait before polling again. The broker could even dynamically adjust the rate based on an estimate of supply and demand.

One way to do this would be a custom header in responses to /proxy requests:

Snowflake-Next-Poll: Thu, 22 Mar 2018 18:05:47 GMT

Or using a relative time offset:

Snowflake-Next-Poll: 600

There was a similar idea for flash proxy.

#8171
The facilitator included a fixed check-back-in=600 in its responses.
#8172
Adjust polling interval dynamically (never implemented).

Child Tickets

Change History (3)

comment:1 Changed 16 months ago by Samdney

Keywords: starter added

comment:2 Changed 16 months ago by Samdney

Cc: Samdney added

comment:3 in reply to:  description Changed 40 hours ago by serna

I can do this.

The broker could instead tell each proxy how long to wait before polling again. The broker could even dynamically adjust the rate based on an estimate of supply and demand.


What information would you use to determine the time dynamically? I was thinking in using clientDeniedCount and proxyIdleCount from the metrics but it resets every 24 hours which can be a bit misleading.

One way to do this would be a custom header in responses to /proxy requests:

Snowflake-Next-Poll: Thu, 22 Mar 2018 18:05:47 GMT

Or using a relative time offset:

Snowflake-Next-Poll: 600


The second one seems like the best option. A timestamp can be confusing to read and would depend on the operating system clock which can be offset.

Note: See TracTickets for help on using tickets.