
Я поддерживаю несколько веб-краулеров. Я хочу улучшить нашу систему нагрузки/регулирования, чтобы она стала более интеллектуальной.
Конечно, я смотрю на коды ответов и увеличиваю или уменьшаю скорость на основе этого. Я бы хотел, чтобы система лучше динамически регулировала скорости на основе поведения запрашиваемого сервера. Допустим, сейчас очень загруженное время суток, и целевой веб-сервер испытывает необычно высокий объем трафика или что-то еще. Затем я хотел бы обнаружить это, уменьшить скорость запроса с моей стороны, чтобы быть вежливым, и снова увеличить скорость, когда сервер снова будет в порядке.
Какие симптомы я бы мог заключить как индикаторы, чтобы сбросить обороты? И какие были бы мои индикаторы, чтобы снова сбросить обороты?
Я думал о том, чтобы записывать время ответа для каждого запроса, например, за последний час. Проблема в том, что крайне сложно найти разумное среднее/медианное время запроса для сравнения, поскольку все серверы разные, и даже ресурсы в пределах одного веб-сайта отвечают с очень разной скоростью. Еще я думал о поиске колебаний времени ответа, но я не знаю, является ли это общим симптомом или более распространено то, что все запросы просто выполняются дольше.