Замер на проде 2026-08-13: резолвер выбирал asocks-residential-1, который
отдаёт 403 и на Авито, и на Циане, при трёх рабочих мобильных узлах (Циан
через них — 200).
Причина: ранжирование шло по consecutive_fails, затем по свежести
last_ok_at. У всех узлов ноль сбоев, поэтому решала свежесть healthcheck'а,
а он проверяет доступность самого прокси, а не то, пускает ли через него
площадка. Узел одновременно «здоров» и заблокирован. Как только истекал
TTL бана, он снова становился первым кандидатом — при ban_count=17 по Циану.
- В ранжирование добавлен ban_count по этому источнику: NOT EXISTS заменён
на LEFT JOIN, истёкшие строки банов больше не теряются, а работают как
история. Порядок: сначала узлы без истории, дальше по возрастанию
ban_count, при равенстве — прежний tie-break.
- Активный бан по-прежнему исключает узел полностью, семантика не менялась.
- В лог выбора добавлен ban_count — чтобы было видно, что узел с историей
выбран осознанно. Полный URL с credentials по-прежнему не логируется.
На проде это ставит residential-1 последним для Авито (5 банов против 0 у
mobile-2/3) вместо первого.