Локальная 27B-модель vs Claude: расследование продакшен-инцидента
Опубликовано: 2026-10-06 · Автор: AI Release · @ai_release1
⚡ Главное за 5 секунд - Локальная 27B-модель справилась с расследованием реального инцидента, но потребовалось около 40 прогонов. - Эксперимент воспроизводим на стенде с двумя RTX 5090 и реальным багом. - Ограничение: локальным моделям был недоступен серверный WebSearch Claude Code, а обычный интернет — только через curl/WebFetch. ### 🔍 Что обнаружено Продакшен-инцидент разворачивался в Java-сервисе, который ходит во внешний сервис через Feign поверх Apache HttpClient 5. При деградации внешнего сервиса метрика leased упиралась в 200 из 200, хотя реально активных вызовов было около дюжины. Новые запросы падали по таймауту, рестарт временно возвращал всё в норму. Причиной оказалась редкая гонка в httpcore5 5.3.6: поток, ожидающий соединение из пула, не отменял операцию после таймаута, и выданное соединение оставалось в состоянии leased без владельца. Баг исправлен в httpcore5 5.4.3. Ситуацию провоцировала конфигурация: ограничитель разрешал 300 одновременных операций при пуле на 200 соединений. Одно такое событие почти незаметно, но затем включается положительная обратная связь: эффективный размер пула уменьшается, очередь растёт, таймаутов становится больше, вероятность снова попасть в гонку увеличивается — постепенно пул можно потерять целиком. Эталонный прогон Claude Opus 5.5 прошёл все пять этапов расследования примерно за 20 минут. Затем задачу прогнали через локальную 27B-модель на стенде: 2× RTX 5090, Ryzen 9 9950X3D, 128 ГБ RAM, Linux, NVMe. Условия были одинаковыми: чистый клон репозитория, свежий Maven-репозиторий без новых версий httpcore5 и httpclient5, один и тот же промпт, без памяти и истории. Локальные модели подключались к Claude Code через ANTHROPIC_BASE_URL и небольшой proxy. Агенты могли читать код, писать тесты, запускать Maven, но не имели права менять продакшен-код. Как выяснилось позже, запрет понимали не все. Пять этапов включали поиск несогласованных лимитов, проверку гипотезы про логгер, выявление гонки, воспроизведение утечки (leased > 0 после завершения запросов) и поиск исправления в upstream. ### 💡 Почему это важно Локальный запуск ничего не стоит, но платить приходится временем и числом попыток: около 40 прогонов. Тест может повторить любой, у кого есть две RTX 5090 и реальный баг. Дополнительный фильтр — намеренно оставленная в промпте ошибочная гипотеза про кастомный Feign-логгер: при logLevel = NONE логгер вообще не вызывается, и модель должна была отвергнуть эту версию. Именно эта гипотеза стала одним из самых интересных фильтров эксперимента. Кроме того, локальным моделям был недоступен серверный WebSearch Claude Code, поэтому поиск исправления в upstream был несколько сложнее. ### 🧩 Контекст Эксперимент вырос из реального разбора инцидента: по графикам Grafana автор заподозрил утечку соединений, попросил Claude составить промпт для другого агента и получил полное расследование. Затем захотелось проверить, справится ли локальная модель. Одна из версий мотивации — желание занять две RTX 5090 и прогреть комнату в холода. Для чистоты теста Maven-репозиторий очищали от свежих версий зависимостей, чтобы само их наличие не стало подсказкой.
⚡ Главное за 5 секунд - Локальная 27B-модель справилась с расследованием реального инцидента, но потребовалось около 40 прогонов.
- Эксперимент воспроизводим на стенде с двумя RTX 5090 и реальным багом.
- Ограничение: локальным моделям был недоступен серверный WebSearch Claude Code, а обычный интернет — только через curl/WebFetch.
🔍 Что обнаружено Продакшен-инцидент разворачивался в Java-сервисе, который ходит во внешний сервис через Feign поверх Apache HttpClient 5.
При деградации внешнего сервиса метрика leased упиралась в 200 из 200, хотя реально активных вызовов было около дюжины.
Новые запросы падали по таймауту, рестарт временно возвращал всё в норму.
Причиной оказалась редкая гонка в httpcore5 5.3.6: поток, ожидающий соединение из пула, не отменял операцию после таймаута, и выданное соединение оставалось в состоянии leased без владельца.