Запросы имеют протяжённость во времени.
Начало запроса — отправка запроса клиентом.
Окончание – завершение получения данных клиентом и закрытие соединения.
Неизвестно тут, что сервер считает за отметку времени запроса: его начало, конец, или что-то ещё.
Допустим, разрешены 3 запроса в 1 секунду.
Отправил 3 одновременно. Но 2 из них призадумались и тянутся по 5 секунд каждый, а один отыграл за 500 миллисекунд. Когда можно отправить ближайший следующий запрос?
|--------------------|
|--------------------|
|--|
0-----1-----2-----3--
Гарантированно можно через 1 секунду после
завершения 3-го быстрого, т.е. через 1500мс со «старта».
И можно эвристически порисковать и чуть уменьшить эту паузу с окончания очередного запроса.
Можно держать N «дорожек» – по числу одновременных запросов в единицу времени. И ставить очередной запрос на первую освободившуюся «дорожку».