Optimizacion del rendimiento de BotBrowser en produccion
Consejos practicos para optimizar memoria, CPU y rendimiento al ejecutar BotBrowser a escala.
Descripcion general
Ejecutar decenas o cientos de instancias de BotBrowser requiere gestion cuidadosa de recursos. Esta guia cubre optimizaciones practicas para despliegues en produccion.
Carga de perfiles
Almacena perfiles en almacenamiento local rapido en lugar de volumenes montados en red:
cp /mnt/nfs/profiles/*.enc /opt/profiles/
chrome --bot-profile="/opt/profiles/profile.enc"
Para seleccion aleatoria, usa --bot-profile-dir="/opt/profiles/".
Gestion de memoria
Cada instancia de Chrome usa 200-500 MB de RAM. Limita el heap V8 para tareas ligeras:
chrome --bot-profile="/path/to/profile.enc" \
--js-flags="--max-old-space-size=256"
Cierra paginas rapidamente y reinicia procesos del navegador tras un numero determinado de tareas (ej. cada 50):
const page = await browser.newPage();
await page.goto('https://example.com');
// ... trabajar ...
await page.close(); // Liberar memoria inmediatamente
Optimizacion de CPU
Desactiva funciones innecesarias:
chrome --bot-profile="/path/to/profile.enc" \
--disable-background-timer-throttling \
--disable-renderer-backgrounding \
--disable-component-update
Limita instancias concurrentes a 2-4 por nucleo de CPU.
Optimizacion de red
Bloquea recursos innecesarios para reducir ancho de banda:
await page.setRequestInterception(true);
page.on('request', (req) => {
const type = req.resourceType();
if (['image', 'media', 'font'].includes(type)) {
req.abort();
} else {
req.continue();
}
});
Monitoreo
Usa el logging interno de BotBrowser para depuracion:
chrome --bot-profile="/path/to/profile.enc" \
--bot-internal --v=1
Referencia rapida
| Optimizacion | Impacto | Complejidad |
|---|---|---|
| Almacenamiento local de perfiles | Alto | Bajo |
| Limite de heap JS | Medio | Bajo |
| Modo headless | Alto | Bajo |
| Bloqueo de recursos | Alto | Medio |
| Reciclaje de workers | Medio | Medio |
| Limite de instancias por nucleo | Alto | Bajo |
Primeros pasos
- Descarga BotBrowser desde GitHub
- Almacena perfiles en almacenamiento local rapido
- Establece limites de memoria y topes de instancias segun recursos del servidor
- Monitorea el uso y ajusta la concurrencia en consecuencia