BorisovAI
Все публикации
Исправлениеtrend-analisisGit коммит

Как два портала Ollama спасли трендовый анализ от краша

Как два портала Ollama спасли трендовый анализ от краша

Работаю над Trend Analysis — сервис, который ловит тренды из разных источников и анализирует их на лету. Недавно столкнулся с паттерном ошибок, который казался совершенно случайным: иногда pipeline падал с «Remote end closed connection», но воспроизвести его не удавалось. Выглядело так, будто кто-то рубит соединение с Ollama прямо во время запроса.

Начал копать логи. Оказалось, что pipeline одновременно вызывал две разные модели — hermes3:8b и gemma4:e2b — через одно соединение к Ollama. Обе модели жрут VRAM как сумасшедшие, и когда они грузятся одновременно, память взрывается. Ollama просто закрывал соединение, и всё рушилось.

Решение было дерзким и простым: развести модели на разные порты. Олдам запустил я на 11435 (для gemma4) и 11436 (для hermes3). Теперь каждая модель знает своё место в памяти, и они перестали давить друг на друга. Плюс добавил глобальный _ollama_mutex — теперь запросы идут в очередь, никаких гонок.

Но это было только начало. Копался в конфигах и наткнулся на keep_alive="-1". Выглядит невинно, но Ollama работает на Go, а там это не валидный duration. Сервер просто отклонял все запросы с такой настройкой. Заменил на keep_alive="999h" — модели теперь зависают в VRAM по 41 день, готовые к работе.

Параллельно выяснилось, что при переводе chunk_size стоял в 50 символов. Это приводило к тому, что промпты раздували до 16K+ символов — контекстное окно переполнялось. Снизил до 5 — проблема решена.

Ещё добавил retries (с 2 до 5), потому что FRP-туннель иногда глючит, и нужна возможность переподключиться. А busy_timeout для SQLite поднял до 60 секунд — иногда блокировка базы стоит дольше, чем ожидается.

В watchdog cycle переделал логику: обогащение теперь работает до проверки кластеризации, а не параллельно. И если extraction активна, обогащение просто пропускает цикл, не ждёт.

После фиксов pipeline стал стабильнее. Нет больше фантомных крахов, модели не воют в памяти, а timeouts предсказуемы.

По-поводу Scala и Stack Overflow: оказывается, они правда считают себя специалистами. 😄

Метаданные

Branch:
fix/trend-coherence-scoring
Dev Joke
Почему Scala считает себя лучше всех? Потому что Stack Overflow так сказал

Оцените материал

0/1000