And I forgot to mention that approach I mentioned talks about waking up N goroutines at a time. The way I plan to do is to select a range of N goroutines from my list of goroutines and only allow those goroutines to send HTTP requests. I could use this approach to select the N goroutines or even use a Semaphore. I presume using a Semaphore, will allow a good amount of random N goroutines out of M goroutines to execute.
On Thursday, 3 February 2022 at 10:26:28 UTC+11 envee wrote: > Thanks Robert, Uli and Ian for your suggestions. > > I think what I will probably do is use a Ticker with a duration of 1ms. At > every 1ms, I will "wake-up" N number of goroutines to trigger HTTP requests. > That number N = (request rate per second / 1000) = requests per ms. > So, if I need to ensure a rate of 10000 requests per second, I believe it > should be possible for the Ticker to return after every 1ms and then fire > about 10 requests at every such interval. > From the tests that I have performed, I can see that a Ticker pretty > accurately fires at every 1ms interval. > I think it's only when the Ticker duration falls below 1ms, that I see > issues. > > If my desired rate is less than 1000 per second, then I will create a > Ticker to return every 1000/request rate milliseconds, which will be a > number greater than 1ms. > > This approach is closely based on Robert's suggestion about using a higher > duration for Ticker time and waking up a small subset of goroutines. > > I think it should be ok for a client to be accurate at the level of > granularity of 1ms. > > > On Thursday, 3 February 2022 at 01:14:20 UTC+11 ren...@ix.netcom.com > wrote: > >> Because 20000 is a magnitude larger than 2000. >> >> > On Feb 1, 2022, at 1:44 PM, Uli Kunitz <uli.k...@gmail.com> wrote: >> > >> > -- You received this message because you are subscribed to the Google Groups "golang-nuts" group. To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/golang-nuts/209b18aa-1317-4d72-80a1-222f10a26013n%40googlegroups.com.