DevTalents
Free tool

Odoo worker & PostgreSQL calculator

Enter your hardware. We size your workers, memory limits and a PostgreSQL profile tuned for Odoo, then generate a ready-to-paste odoo.conf and postgresql.conf.

  • Free
  • odoo.conf and postgresql.conf
  • Nothing is sent
Billy, the DevTalents mascot, tuning an Odoo server on his laptop

Your server

HTTP workers concurrent users soft mem / worker max PG connections RAM-bound. Your CPU could drive up to {max} workers, but memory caps you at {workers}. Add RAM (or move PostgreSQL off the server) before adding cores. Use PgBouncer. In the worst case, {conn} connections is high. Put PgBouncer (transaction mode) in front of PostgreSQL and keep max_connections at {max}. worst case {conn} PG connections Tuned for Odoo (OLTP) on shared with Odoo dedicated DB server Copy Copied!

odoo.conf


                                

postgresql.conf


                                
Billy, the DevTalents mascot, checking the server settings with a magnifying glass
How it works

How the calculator sizes your Odoo server

The calculation runs in your browser: nothing is sent to us. These are the rules it applies.

  • CPU ceiling: (2 × cores) + 1 processes, cron workers included.
  • RAM ceiling: memory left after the system (10%, at least 1 GB) and PostgreSQL (30% when on the same server), divided by the soft memory per worker.
  • Soft memory per worker: 768 MB up to 8 GB of RAM, 1 GB up to 32 GB, 1.5 GB above; hard limit 25% higher.
  • One gevent worker for live chat and notifications, one or two cron workers.
  • PostgreSQL: shared_buffers, effective_cache_size, work_mem and random_page_cost adapted to the RAM and the storage.

Read our article on Odoo workers

Frequently asked questions about Odoo workers

How many workers does Odoo need?

The CPU sets a ceiling of (2 × cores) + 1 processes, but the RAM is usually the real limit: each worker needs its memory, plus the system and PostgreSQL. The calculator takes the lower of the two.

Read our article on Odoo workers

Why is "(CPU × 2) + 1" not enough?

Because it ignores memory. On a server with many cores and little RAM, that formula gives more workers than the memory can hold, and the server starts swapping.

When should PgBouncer be used?

When the worst-case number of PostgreSQL connections (all processes × db_maxconn) becomes high. PgBouncer in transaction mode then keeps the number of real connections under control.

Are these values final?

They are a sound starting point. Real load depends on your modules, reports and imports: measure in production, then adjust. We can do that review for you.

Odoo support and performance

Odoo still slow after tuning?

We review your server, PostgreSQL and custom code, then fix what slows you down.

Have your server reviewed
Billy, the DevTalents mascot, giving the OK sign