tradein/browser: cian-инстанс camoufox отказывает в 63% запусков (99/156 за 30ч) — релонч браузера перед КАЖДЫМ fetch из-за чередования аренд; generic на том же узле 0% #3413

Closed
opened 2026-09-07 11:10:31 +00:00 by bot-backend · 0 comments
Collaborator

Найдено при диагностике #3411 (прод, 07.09, BUILD_SHA=f52a39e). Отказывает не площадка, а наш инстанс браузера.

Решающая улика — один узел (14), один URL, одна минута:

browser (generic) -> SIDECAR 200, upstream 200, 880 687 Б, 12.1 с, title='ЖК «Мкр. Центральный» ...'
browser (cian)    -> SIDECAR 500, 61.6 с, {"error":"TimeoutError: Page.goto: Timeout 60000ms exceeded"}  x3
curl (тот же прокси) -> 200, 604 035 Б, 1.35 с, redirects=0

Масштаб: tradein-browser[cian]99 ошибок на 156 запусков camoufox (63%) за 30 ч; tradein-browser[generic]0. Таймаутов Page.goto: 87 на ekb.cian.ru (обычные карточки) + 5 на zhk-*. Болен весь циановский тракт; detail-бэкфилл выживает за счёт ретраев (399/400 достаётся дорого), малообъёмная фаза houses ложится целиком.

Первый подозреваемый — релонч перед каждым запросом. В логе буквально перед каждым fetch:

tradein-browser[cian]: прокси изменился (override=True) — relaunch перед fetch
tradein-browser[cian]: браузер закрыт -> запуск AsyncCamoufox (proxy=True, recycle_pages=15) -> браузер запущен

У сайдкара один инстанс на провайдера (_locks[provider], BROWSER_CONCURRENCY=1), а cian-вызывающих несколько, каждый со своей арендой (proxy_override) -> _ensure_browser видит смену прокси -> _close_browser + холодный старт. Холодный camoufox под domcontentloaded-навигацию тяжёлой страницы Циана не доезжает за 60 с. recycle_pages=15 не работает: инстанс не живёт до 15 страниц.

Варианты (нужен замер, не догадка): инстанс на пару (provider, proxy) вместо (provider); «липкая» аренда для cian на окно прогона (как #2640 для другого пути); очередь-батчинг по провайдеру, чтобы подряд идущие запросы одной аренды не перезапускали браузер. Плюс проверить необходимость прогрева после старта.

Приёмка: доля browser launch failed / Page.goto timeout у [cian] за сутки < 10 % (сейчас 63 %); число строк «relaunch перед fetch» падает кратно; медиана времени fetch по cian ~ времени generic (10-12 с).

Refs #3411, #3402, #3386, #2640.

Найдено при диагностике #3411 (прод, 07.09, `BUILD_SHA=f52a39e`). **Отказывает не площадка, а наш инстанс браузера.** Решающая улика — один узел (14), один URL, одна минута: ``` browser (generic) -> SIDECAR 200, upstream 200, 880 687 Б, 12.1 с, title='ЖК «Мкр. Центральный» ...' browser (cian) -> SIDECAR 500, 61.6 с, {"error":"TimeoutError: Page.goto: Timeout 60000ms exceeded"} x3 curl (тот же прокси) -> 200, 604 035 Б, 1.35 с, redirects=0 ``` **Масштаб:** `tradein-browser[cian]` — **99 ошибок на 156 запусков camoufox (63%)** за 30 ч; `tradein-browser[generic]` — **0**. Таймаутов `Page.goto`: 87 на `ekb.cian.ru` (обычные карточки) + 5 на `zhk-*`. Болен весь циановский тракт; detail-бэкфилл выживает за счёт ретраев (399/400 достаётся дорого), малообъёмная фаза houses ложится целиком. **Первый подозреваемый — релонч перед каждым запросом.** В логе буквально перед каждым fetch: ``` tradein-browser[cian]: прокси изменился (override=True) — relaunch перед fetch tradein-browser[cian]: браузер закрыт -> запуск AsyncCamoufox (proxy=True, recycle_pages=15) -> браузер запущен ``` У сайдкара один инстанс на провайдера (`_locks[provider]`, `BROWSER_CONCURRENCY=1`), а cian-вызывающих несколько, каждый со своей арендой (`proxy_override`) -> `_ensure_browser` видит смену прокси -> `_close_browser` + холодный старт. Холодный camoufox под `domcontentloaded`-навигацию тяжёлой страницы Циана не доезжает за 60 с. `recycle_pages=15` не работает: инстанс не живёт до 15 страниц. **Варианты (нужен замер, не догадка):** инстанс на пару (provider, proxy) вместо (provider); «липкая» аренда для cian на окно прогона (как #2640 для другого пути); очередь-батчинг по провайдеру, чтобы подряд идущие запросы одной аренды не перезапускали браузер. Плюс проверить необходимость прогрева после старта. **Приёмка:** доля `browser launch failed` / `Page.goto timeout` у `[cian]` за сутки < 10 % (сейчас 63 %); число строк «relaunch перед fetch» падает кратно; медиана времени fetch по cian ~ времени generic (10-12 с). Refs #3411, #3402, #3386, #2640.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: lekss361/gendesign#3413
No description provided.