Прокси пропускает один срок. Пул удаляет его. Через час прокси снова исправен, но ваше приложение не может это обнаружить, потому что выбросило запись.

Удаление может быть уместно для отозванной учётной записи или узла, который оператор вывел из эксплуатации. Временный сбой заслуживает другого состояния.

Храните достаточно истории для следующего решения

Годен
Доступен для обычной работы в рамках текущей политики.
Остывает
Временно удержан до записанного срока.
Проверка разрешена
Одна контролируемая попытка может оценить восстановление.
Отключён
Оператор или устойчивое условие вывели его из обслуживания.

Храните причину и стадию вместе с переходом. Отказ в соединении, отклонённые учётные данные, медленное тело ответа и HTTP-ошибка пункта назначения не должны все вместе увеличивать недифференцированный счётчик «мёртвых прокси».

Используйте часы прошедшего времени для остывания внутри процесса. Монотонные часы не дают короткому ожиданию зависеть от подстройки настенных часов. Не сохраняйте монотонную отметку времени так, будто это переносимая дата, общая для других машин; распределённому планировщику нужна отдельно определённая модель времени и владения.

Восстановление не должно выпускать толпу

Когда срок истекает, разрешите небольшую попытку восстановления, а не отправляйте всю очередь ожидания сразу. Успешная попытка может восстановить годность; ещё один сбой может продлить паузу согласно ограниченной политике.

Выбирайте проверку под ту работу, которую она должна предсказывать. Успешное TCP-соединение не является полной транзакцией HTTP или SOCKS. Посторонняя страница проверки IP не доказывает, что нужный пункт назначения достижим или разрешён.

Из слова «прокси» не следует никакая универсальная длительность остывания. Задайте её из бюджета задержки операции, поведения сервиса и последствий ещё одной неудачной попытки. Сохраняйте запись узла, чтобы временный перерыв не стал молча постоянной потерей мощности.

Похожие статьи