🎯 Objetivo de este capítulo
Al terminar este capítulo tendrás:
PgBouncer instalado correctamente
Funcionando como proxy entre Odoo y PostgreSQL
Sin romper Odoo
Listo para optimización y hardening
👉 No vamos a tunear todavía.
Primero: que funcione bien.
🧱 Arquitectura recomendada
Odoo → PgBouncer → PostgreSQL
PgBouncer en el mismo servidor que PostgreSQL (recomendado)
Odoo conectando solo a PgBouncer
PostgreSQL no expuesto directamente a Odoo
🖥️ Requisitos previos
Odoo funcionando correctamente
PostgreSQL operativo
Acceso root o sudo
Sistema Linux (Debian / Ubuntu / RHEL)
📦 Paso 1 – Instalar PgBouncer
Debian / Ubuntu
sudo apt update
sudo apt install pgbouncer
RHEL / Rocky / Alma
sudo dnf install pgbouncer
Verifica:
pgbouncer --version
📁 Paso 2 – Archivos importantes
Normalmente encontrarás:
Config principal:
/etc/pgbouncer/pgbouncer.ini
Usuarios:
/etc/pgbouncer/userlist.txt
Servicio:
pgbouncer.service
⚙️ Paso 3 – Configuración mínima de PgBouncer
Edita /etc/pgbouncer/pgbouncer.ini:
[databases] odoo = host=127.0.0.1 port=5432 dbname=odoo [pgbouncer] listen_addr = 0.0.0.0 listen_port = 6432 auth_type = scram-sha-256 auth_file = /etc/pgbouncer/userlist.txt pool_mode = transaction max_client_conn = 500 default_pool_size = 20 log_connections = yes log_disconnections = yes
👉 Notas importantes
pool_mode = transaction → el único modo seguro para Odoo
listen_port = 6432 → puerto estándar de PgBouncer
odoo debe coincidir con el nombre de la DB
👤 Paso 4 – Crear el archivo de usuarios
Edita /etc/pgbouncer/userlist.txt:
Formato:
"usuario" "password"
Ejemplo:
"odoo" "SCRAM-SHA-256$4096:..."
👉 Debe coincidir exactamente con el usuario de PostgreSQL.
Si no usas SCRAM todavía:
ALTER USER odoo WITH PASSWORD 'password_seguro';
(PostgreSQL generará el hash SCRAM)
🔐 Paso 5 – Verificar acceso a PostgreSQL
Asegúrate de que PgBouncer sí puede conectarse a PostgreSQL:
pg_hba.conf debe permitir:
localhost
usuario odoo
método scram-sha-256 o md5
Ejemplo:
host all odoo 127.0.0.1/32 scram-sha-256
Reinicia PostgreSQL si cambias esto.
▶️ Paso 6 – Arrancar PgBouncer
sudo systemctl enable pgbouncer sudo systemctl start pgbouncer
Verifica:
sudo systemctl status pgbouncer
Y que el puerto esté abierto:
ss -lntp | grep 6432
🔌 Paso 7 – Probar conexión manual
Desde el servidor:
psql -h 127.0.0.1 -p 6432 -U odoo odoo
Si entras:
👉 PgBouncer funciona correctamente.
Si falla:
revisa logs
revisa auth
revisa pg_hba.conf
🔁 Paso 8 – Conectar Odoo a PgBouncer
Edita odoo.conf:
db_host = 127.0.0.1 db_port = 6432 db_user = odoo db_password = password_seguro
⚠️ Odoo NO debe conectarse directo a PostgreSQL
Reinicia Odoo:
systemctl restart odoo
👀 Paso 9 – Ver que Odoo ya pasa por PgBouncer
En PgBouncer:
psql -p 6432 -U odoo pgbouncer
Luego:
SHOW POOLS; SHOW CLIENTS;
Si ves actividad:
👉 Odoo ya está usando PgBouncer.
❌ Errores comunes en esta etapa
Conectar Odoo a PostgreSQL “solo para probar”
Pool mode incorrecto
Password distinto entre PgBouncer y PostgreSQL
pg_hba.conf bloqueando conexiones
No reiniciar servicios tras cambios
📌 Conclusión
Ahora tienes:
PgBouncer instalado
Conexiones desacopladas
Base estable para optimizar
👉 Todavía no has ganado rendimiento máximo,
pero ya evitaste el colapso.
👉 Siguiente capítulo
Configuración básica de PgBouncer optimizada para Odoo
Ahí empezamos a:
calcular pools
evitar starvation
preparar producción real