Оптимизация производительности 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-режим | Высокое | Низкая |
| Блокировка ресурсов | Высокое | Средняя |
| Переработка воркеров | Среднее | Средняя |
| Лимит экземпляров на ядро | Высокое | Низкая |
Начало работы
- Скачайте BotBrowser с GitHub
- Храните профили на локальном быстром хранилище
- Установите лимиты памяти и количества экземпляров в соответствии с ресурсами сервера
- Мониторьте использование и корректируйте конкурентность