В приложении, которое параллельно загружает много документов через http, я хотел бы оптимально использовать сетевое соединение, не выходя за его пределы и не получая тайм-ауты.
Я думаю, что это связано с контролем заторов. Возможно постепенное увеличение частоты запросов до тех пор, пока сетевое соединение не окажется перегруженным, после чего следует небольшое снижение частоты запросов, а затем постоянный мониторинг для регулировки скорости.
Проблема, с которой я сталкиваюсь, заключается в том, как лучше всего определить перегруженное состояние сети. Если бы я измерил время между отправкой запроса и началом ответа, это фактически дало бы мне время в оба конца. Если среднее значение этого времени значительно увеличивается, то у нас перегруженная сеть. Интересно, что в данном случае должно значить «значительно».
Звучит ли это правильно? Можете ли вы пролить свет на эту проблему? Кто-нибудь закодировал этот сценарий?
Я пометил этот вопрос .net, потому что это среда, которую я использую, и если есть поддержка инфраструктуры для этого сценария, то я хотел бы знать.
EDIT
Чтобы уточнить, я говорю о многих хостах здесь и только об одном экземпляре приложения. У меня уже есть система, позволяющая избежать одновременных подключений к одному и тому же серверу (запросы доставляются из конца в конец), поэтому вопрос не столько в том, как насытить канал (я знаю, как это сделать), но в том, как лучше всего ограничить количество запросов, чтобы избежать ошибок тайм-аута.