Сайзинг egress · 02.09.2026

Сколько прокси нужно каждой площадке

Замер с боевого сервера показал излом: один адрес держит три одновременных фетча, дальше латентность растёт. Отсюда считается всё остальное — и сегодняшний дефицит, и цена каждого следующего адреса.

Источники: Loki 26–28.08.2026 (1762 детали, 892 HTTP-запроса) · PG-склад 481 К машин · таблица proxies и живые env прода

В строю сейчас 4 IP 3 общих (Китай + Корея) + 1 немецкий. Пятый, .165, отключён. РФ-площадки ходят с IP сервера.
Необходимо и достаточно 9 IP 6 азиатских + 2 немецких + 1 российский. Столько нужно, чтобы сегодняшние анти-бан-капы можно было выбрать целиком.
После диеты слота 14 IP Когда запись в Postgres и подбор мощности уедут из детального слота, доля времени «занят прокси» вырастет с 0,22 до ~0,9. Проекция, не факт.

Модель

Прокси меряется не штуками, а одновременностью

Площадка ограничивает нас не числом адресов, а числом одновременных соединений с одного IP. Деталь занимает прокси не всю свою жизнь, а только на время фетча — остальное время слот пишет в Postgres, переводит и считает растаможку. Поэтому размер флота выводится из трёх измеримых чисел, а не из ощущений.

IPплощадки = ⌈ A × ( f / T ) / c ⌉ + 1 резервный

A — анти-бан-кап одновременных деталей площадки (capacity_service: 12 / 8 / 24 / 4).
f / T — доля времени детали, когда прокси занят. Замерено по Loki.
c = 3 — сколько соединений держит один физический адрес до деградации. Замерено, см. график.
+1 — резерв: один адрес обслуживает три площадки сразу, его смерть бьёт по всем трём.

Ключевое следствие: c = 3 — это предел самого адреса, а не пары «адрес × сайт». Один физический IP сегодня записан в таблицу тремя строками (dongchedi, che168, encar) с одними и теми же кредами, и лимитер proxy_slots:{proxy} считает слоты по URL целиком — то есть три площадки делят одни и те же три соединения. Складывать спрос надо по адресу, а не по площадке.

Замер · где излом

Три соединения на адрес — и ни одним больше

DongCheDi (n=413) Encar (n=791) Che168 (n=122) зона деградации
0 1,5 с 3,0 с 4,5 с 6,0 с 1 3 5 7 9 11 12 одновременных фетчей площадки (на 3 адресах) > 3 на адрес 5,76 с 3,64 с

Медиана времени фетча в зависимости от того, сколько фетчей этой площадки уже в полёте. До 10 (≈3 на адрес) линия плоская: площадка нас не замечает. На 11–12 медиана прыгает на 45 % у обеих площадок разом — это упирается транспорт прокси, а не сайт. Che168 показан до 6: дальше выборка меньше 5 задач.

Излом совпадает с тем, что уже зашито в код эмпирически: PROXY_MAX_CONCURRENCY=3 с комментарием «прокси задыхался при ~4+». Замер это подтверждает и делает числом: потолок адреса — 3 одновременных фетча, дальше платим латентностью, а не получаем пропускную способность.

Замер · цена одной машины

Сколько прокси-времени стоит карточка

Площадка Фетч p50 Фетч p90 Задача p50 Доля прокси Запросов/машину Маршрут
DongCheDi2,49 с3,36 с11,4 с0,2223 общих IP
Che1683,64 с16,2 с5,8 с0,621 + 2 напрямую3 общих IP
Encar3,99 с11,4 с14,6 с0,272,33 общих IP + IP сервера
mobile.deнет замера——~0,41 + solve1 IP, sticky-пин
Drom1,61 с2,34 с10,4 с0,151IP сервера
Auto.ru1,94 с4,61 с8,8 с0,221 + bootstrapIP сервера
Avito144,5 с159,2 с146,2 с0,993 hopVPN-устройства

Два вывода, которые меняют арифметику. Первый: фото прокси не тратят — все иностранные CDN открыты с прод-IP, и image_fetcher ходит direct-first; галерея из 30 кадров стоит ноль прокси-секунд. Второй: che168 держит прокси дольше всех относительно себя (0,62 против 0,22 у dongchedi) — задача короткая, а фетч длинный, поэтому на равном капе che168 съедает вдвое больше адресов, чем кажется.

Ответ

Необходимое и достаточное по площадкам

«Достаточно» = столько адресов, чтобы анти-бан-кап площадки можно было выбрать полностью, ни разу не поставив на адрес четвёртое соединение. Меньше — кап недостижим, и потолок задаёт не площадка, а наш egress. Больше — деньги, которые кап не даст потратить.

Площадка Кап A Одновр. фетчей Сейчас Нужно После диеты Гео пула
DongCheDi122,63*14Китай (общий)
Che16885,03*23Китай (общий)
Encar246,63*38Корея (общий)
mobile.de41,6123Германия
Drom + Auto.ru4 + 41,5012Россия
Физических адресов—17,34914+1 резерв уже внутри

* Три китайско-корейских адреса — одни и те же физические IP: 79.172.218.214 / .230 / .247. Столбец «нужно» уже сложен по адресам, поэтому 1 + 2 + 3 = 6 азиатских, а не 6 на каждую площадку.

Что такое «после диеты». Деталь занимает слот 11,4 с у dongchedi и 14,6 с у encar, а с площадкой разговаривает 2,5 и 4,0 с. Остальное — наша собственная работа внутри слота: синхронная запись в Postgres на HDD (5,3 с у dongchedi, 6,3 с у encar, 7,7 с у drom — сегодня это самый крупный кусок), инлайновый подбор мощности, перевод, эмит. Программа «ёмкость без закупок» выносит это из слота — и тогда деталь почти всю свою жизнь висит на проводе: доля «занят прокси» уходит с 0,22 к ~0,9. Кап площадки при этом не меняется, но те же 12 одновременных деталей dongchedi дают уже не 2,6 одновременных фетча, а 10,4 — вчетверо больше адресов под ту же цифру в конфиге. Это и есть механизм «сколько ни оптимизируй — упрёмся в прокси»: оптимизация переводит нашу внутреннюю задержку во внешний спрос. В замере эффекта пока НЕ видно — save_db_ms за 28.08 не упал, а вырос, — поэтому колонка «после диеты» здесь проекция, а не факт.

Avito считается отдельно: там не прокси, а residential-устройства, и одна машина стоит 144 секунды монопольного устройства. Это 25 машин в час на устройство. На сегодняшних четырёх устройствах типовая сессия в 15 машин собирается 36 минут. Чтобы avito вела себя как остальные площадки (сессия ≤ 2 минут), нужно 8–12 устройств — либо сначала разобраться, почему hop стоит 144 с, потому что покупать устройства под такую цену запроса дорого.

Цена следующего адреса

Что даёт каждый купленный IP

ПлощадкаМашин/час с одного IPЖивых сессий разомПолное обновление склада
DongCheDi3 2502,8105 К за 32 ч
Che1682 2302,17,7 К за 3,5 ч
Encar2 0301,215 К за 7,6 ч
mobile.de1 8002,9145 К за 80 ч
Avito (устройство)250,03неприменимо

Расчёт: 3 соединения × 3600 с / фетч, с запасом 25 % на p90-хвост и кулдауны. «Живых сессий разом» — сколько одновременных поисков адрес доводит до полной выдачи за минуту при сегодняшнем размере сессии (26 машин у dongchedi, 39 у encar, 24 у che168, 15 у mobile.de).

Отсюда честный ответ на вопрос «упрёмся ли мы всё равно в прокси». При сегодняшнем трафике — нет: 60 поисков в сутки не выбирают и десятой доли одного адреса. Прокси станут потолком на двух режимах: ночные кампании-бэкфиллы (там спрос идёт тысячами машин в час) и рост живого поиска за ~300 сессий в час. Именно поэтому размер флота стоит привязать к капам, а не к текущему трафику: кап — это то, что мы включим в ту же ночь, когда понадобится.

До закупки

Пять адресов, которые уже оплачены, но не работают

Che168

Проба флота метит живые адреса мёртвыми — но целится уже правильно

Цель пробы починили 27.08: она строит подписанный URL тем же билдером, что и боевой скрапер. Флапает всё равно. В базе у трёх адресов 2846 / 2848 / 2849 «сбоев» против 15–49 успехов, в логе — «1029 сетевых сбоев подряд → маршрут в кулдаун». Причина другая: che168 через эти датацентровые адреса отвечает 1,4–1,8 с, когда отвечает, и не укладывается в 8-секундный таймаут примерно в двух минутах из трёх — при том, что encar и dongchedi по тем же адресам в ту же секунду проходят за 0,5–1,2 с. Лечится порогом (таймаут che168 отдельно, кулдаун — после N подряд, а не первого), но по сути это диагноз маршрутам: che168 нужны не такие же адреса, а лучшие — китайские локальные или резидентные.

Encar

Единственная площадка, которая ходит мимо лимитера

Детальный путь encar не берёт слот в proxy_limiter вообще: скрапер один раз получает self.proxy и работает. При риск-режиме это 24 детали на 3 адреса = 8 на адрес, вдвое-втрое выше измеренного излома, да ещё по два параллельных GET на машину (карточка + осмотр). Отсюда p90 фетча 11,4 с при медиане 4,0 с. Либо encar добавляется в DETAIL_PROXY_MATCHED_SITES, либо кап опускается до 9–12 — пока это не сделано, купленные адреса будут гаснуть в хвостах.

mobile.de

Ротация на блок настроена, ротировать некуда

EGRESS_ROTATION_SITES=mobile_de обещает: сгорел egress — переезжаем на здоровый, паузу площадки ставим последним рубежом. Адрес ровно один (194.87.12.221, 0 успехов / 6 сбоев в базе), и он же прибит sticky-пином к кампании. Любой Akamai-блок = пауза всей площадки. Второй немецкий адрес — не про пропускную способность, а про то, чтобы механизм вообще существовал.

Пул

Четвёртый адрес отключён, и никто не заметил

79.172.218.165:9070 лежит в таблице тремя строками с enabled=false ещё с августовского аудита (он висел в таймаут 12–20 с). Пул с тех пор так и живёт втроём. Либо адрес чинится у провайдера и возвращается, либо заменяется — это минус 25 % ёмкости трёх площадок одновременно, за которые, вероятно, платится абонентка.

Россия

Drom и Auto.ru делят IP сервера со всем остальным DIRECT

У РФ-площадок прокси нет вовсе. Тем же адресом ходят фото всех площадок (direct-first), che168-спецификации и egress Telegram. Auto.ru уже показывает деградацию: 1,67 с при одной параллели против 3,5 с при семи. Один бан по этому IP — и гаснут не РФ-площадки, а весь direct-путь разом. Один российский адрес снимает связанность.

Порядок

Как докупать

  1. Бесплатно: починить учёт и вернуть четвёртый адрес

    Порог пробы che168 (свой таймаут, кулдаун после N подряд); .165 чинится или заменяется; encar заводится под лимитер (или кап опускается до 12). После этого замер повторяется — часть «дефицита» окажется учётной ошибкой, и покупать придётся меньше.

  2. +1 немецкий и +1 российский адрес

    Два самых дешёвых адреса закрывают два SPOF, а не пропускную способность: mobile.de получает возможность ротации, direct-путь перестаёт быть единой точкой отказа для фото, Telegram и РФ-площадок. Делать до всякого роста трафика.

  3. Азиатский пул с 3 до 6 адресов

    Ровно столько нужно, чтобы капы 12 / 8 / 24 выбирались целиком без четвёртого соединения на адресе. Брать по два за раз, наблюдая частоту срабатываний маршрутного предохранителя и медиану фетча — AIMD во флоте сам поднимет темп, если адреса живые.

  4. После диеты слота — до 14

    Когда запись в Postgres и подбор мощности уедут из детального слота, доля «занят прокси» вырастет с 0,2–0,6 почти до единицы: та же пропускная способность потребует вдвое больше адресов. Это и есть точка, где прокси окончательно становятся единственным потолком — покупать надо в тот же заход, что и выкатывать оптимизацию.

  5. Avito — отдельным решением

    144 секунды на машину делают устройства слишком дорогим способом купить пропускную способность. Сначала разбор, из чего складывается hop (листинг → деталь → каталог характеристик через VPN), потом уже количество.