Si solo recuerdas una cosa de esta publicación: más workers es mejor, y la RAM es lo que decide cuántos puedes tener. Todo lo demás es detalle.
Aquí está la versión corta:
Toma la RAM total de tu servidor.
Resta lo que necesita PostgreSQL (si se ejecuta en el mismo servidor) y lo que necesita el SO.
Divide lo que queda por la RAM que permites por trabajador: 1 GB es un techo seguro, 512 MB funciona para un uso ligero.
Ese es tu conteo de workers. El resto de esta publicación explica por qué esto funciona, qué es realmente un trabajador, y cómo verificar la cordura del resultado contra tu conteo de usuarios.
¿Qué es un Odoo workers?
Cuando Odoo se ejecuta en modo de multiprocesamiento (workers = N en la configuración), genera N procesos de workers separados. Cada workers maneja una solicitud HTTP a la vez. Cargar una página en Odoo no es una solicitud, el cliente web realiza una ráfaga de llamadas RPC, solicitudes de activos y conexiones de sondeo prolongado para cada pantalla que tocan tus usuarios.
Así que el conteo de workers es, en la práctica, tu techo en solicitudes por segundo. Dos trabajadores significan dos solicitudes siendo procesadas en cualquier instante; todo lo demás espera en la fila. Esa cola es lo que los usuarios experimentan como "Odoo está lento hoy."
Esta es la razón por la que el objetivo es simple: ejecuta tantos trabajadores como tu máquina pueda soportar.
El único límite real es la RAM
A veces verás una regla general basada en CPU flotando por ahí
(workers = núcleos × 2 + 1)
Es un buen punto de partida, pero en servidores Odoo reales, la RAM se agota mucho antes que la CPU. Los workers pasan la mayor parte de tu tiempo esperando en la base de datos y en I/O, no quemando CPU pero cada uno ocupa memoria permanentemente. Así que dimensiona en RAM, y deja que la regla de la CPU sea un desempate, no la restricción.
Paso 1 Calcula tu RAM disponible
Comienza desde la RAM total de la máquina y resta todo lo que no sea Odoo:
PostgreSQL, si se ejecuta en el mismo servidor. Una configuración común reserva aproximadamente 25–40% de la máquina para ello (shared_buffers más memoria de trabajo). Verifica lo que realmente usa el tuyo.
El sistema operativo y cualquier otra cosa que se ejecute en la caja (agentes de monitoreo, nginx, etc.). Presupuesta 1–2 GB.
ram_disponible = ram_total − ram_postgres − ram_os
Si PostgreSQL vive en su propio servidor, omite esa resta, una de varias buenas razones para separarlos a medida que creces.
Paso 2 Decide tu presupuesto de RAM por workers
Cada workers necesita un límite de memoria (limit_memory_hard / limit_memory_soft en la configuración). En la práctica:
1 GB por worker es el valor predeterminado cómodo. Casi todas las cargas de trabajo encajan.
512 MB por worker funciona si tu uso es ligero: módulos estándar, sin informes pesados, sin grandes importaciones/exportaciones. Obtienes el doble de trabajadores con la misma RAM, pero una sola solicitud pesada puede alcanzar el límite y ser reciclada.
Si no conoces aún tu carga de trabajo, comienza con 1 GB. Puedes reducirlo más tarde una vez que hayas observado el uso real de memoria.
No olvides los cron workers
workers = N solo cuenta los trabajadores HTTP. Odoo también inicia workers cron, 2 por defecto (max_cron_threads), que ejecutan tus trabajos programados: colas de correo, acciones automatizadas, recomputaciones de stock. Consumen RAM exactamente como un trabajador HTTP, y un trabajo programado pesado puede fácilmente usar todo el presupuesto por trabajador.
Así que reserva espacio para ellos antes de dividir. (Odoo también ejecuta un proceso gevent/websocket para funciones en vivo, pequeño, pero sale del mismo grupo.)
Paso 3 Dividir
trabajadores = (available_ram − cron_workers × ram_per_worker) ÷ ram_per_worker
Ejemplo trabajado. Un servidor de 16 GB que ejecuta PostgreSQL localmente:
Total RAM |
16 GB |
− PostgreSQL |
4 GB |
− SO y servicios |
2 GB |
Disponible para Odoo |
10 GB |
− 2 trabajadores cron a 1 GB |
2 GB |
Restante para trabajadores HTTP |
8 GB |
Trabajadores HTTP a 1 GB ecada |
8 workers |
Misma máquina, mismo costo, la única decisión es el presupuesto por worker.
Verificación de cordura: workers vs. conteo de usuarios
La orientación de dimensionamiento de Odoo sugiere aproximadamente un worker por ~25 usuarios internos. Trátalo como una forma de estimar la máquina que necesitas, no como un objetivo a configurar.
Dos razones por las que es solo una guía aproximada:
La carga de trabajo varía enormemente según quiénes sean esos usuarios. Veinticinco personas que ocasionalmente registran tiempo no se comportan como veinticinco representantes de ventas haciendo uso del CRM todo el día, o un equipo de almacén escaneando códigos de barras every pocos segundos.
Odoo es hablador. Cada interacción del usuario se ramifica en múltiples solicitudes. Trabajadores adicionales absorben estos picos, que es lo que mantiene la interfaz con una sensación instantánea.
Así que usa el conteo de usuarios para elegir un tamaño de máquina, luego llena esa máquina con tantos workers como su RAM permita. Si la fórmula te da 10 trabajadores para 50 usuarios, ejecuta 10 trabajadores, no 2. Los workers inactivos no te cuestan nada; los trabajadores faltantes te cuestan tiempo de cola en cada clic.
Referencia rápida
ram_disponible = ram_total − ram_postgres − ram_os
trabajadores = (ram_disponible − cron_workers × ram_por_trabajador) ÷ ram_por_trabajador
ram_por_trabajador: 1 GB (seguro) o 512 MB (cargas de trabajo ligeras)
cron_workers: 2 por defecto (max_cron_threads) — también utilizan RAM
tamaño de máquina: ~1 trabajador por 25 usuarios internos, luego redondea hacia arriba
principio: tantos trabajadores como la RAM permita
O salta la aritmética
Si o prefieres no gestionar configuraciones de workers, límites de memoria y ajustes de PostgreSQL en absoluto: cada plan de Skysize viene con una asignación fija de trabajadores ajustada para su nivel, 3 trabajadores en Lanzamiento, 6 en Escala, 12 en Negocios, en infraestructura que ajustamos y monitoreamos por ti, para Odoo Community y Enterprise.
Ver lo que está incluido en cada plan.
Comienza a probar gratis durante 7 días, sin tarjeta de crédito, y tus copias de seguridad son descargables en cualquier momento, así que nunca estás atrapado.