Назад к блогу
Развертывание

Оптимизация производительности BotBrowser в продакшене

Практические советы по оптимизации памяти, CPU и пропускной способности при масштабном запуске BotBrowser.

Обзор

Запуск десятков или сотен экземпляров BotBrowser требует тщательного управления ресурсами. Это руководство описывает практические оптимизации для продакшен-развертываний.

Загрузка профилей

Храните профили на быстром локальном хранилище, а не на сетевых томах:

cp /mnt/nfs/profiles/*.enc /opt/profiles/
chrome --bot-profile="/opt/profiles/profile.enc"

Для случайного выбора используйте --bot-profile-dir="/opt/profiles/".

Управление памятью

Каждый экземпляр Chrome использует 200-500 МБ ОЗУ. Ограничьте кучу V8 для легких задач:

chrome --bot-profile="/path/to/profile.enc" \
       --js-flags="--max-old-space-size=256"

Закрывайте страницы своевременно и перезапускайте процессы браузера после определенного количества задач (например, каждые 50) для предотвращения накопления памяти:

const page = await browser.newPage();
await page.goto('https://example.com');
// ... работа ...
await page.close(); // Освободить память немедленно

Оптимизация CPU

Отключите ненужные функции:

chrome --bot-profile="/path/to/profile.enc" \
       --disable-background-timer-throttling \
       --disable-renderer-backgrounding \
       --disable-component-update

Ограничивайте параллельные экземпляры до 2-4 на ядро CPU.

Сетевая оптимизация

Блокируйте ненужные ресурсы для снижения трафика:

await page.setRequestInterception(true);
page.on('request', (req) => {
  const type = req.resourceType();
  if (['image', 'media', 'font'].includes(type)) {
    req.abort();
  } else {
    req.continue();
  }
});

Мониторинг

Используйте внутреннее логирование BotBrowser для отладки:

chrome --bot-profile="/path/to/profile.enc" \
       --bot-internal --v=1

Краткий справочник

ОптимизацияВлияниеСложность
Локальное хранилище профилейВысокоеНизкая
Лимит кучи JSСреднееНизкая
Headless-режимВысокоеНизкая
Блокировка ресурсовВысокоеСредняя
Переработка воркеровСреднееСредняя
Лимит экземпляров на ядроВысокоеНизкая

Начало работы

  1. Скачайте BotBrowser с GitHub
  2. Храните профили на локальном быстром хранилище
  3. Установите лимиты памяти и количества экземпляров в соответствии с ресурсами сервера
  4. Мониторьте использование и корректируйте конкурентность
#performance#optimization#speed#deployment#production