Skip to main content

Tuning an instance

Odoo's performance settings are a small set of numbers that interact badly when set independently: worker count, memory limits per worker, request time limits, and how many of those the machine can actually afford.

Antelao asks you for the intent instead: a sizing method and how many concurrent users you expect. The worker counts and memory limits are derived from that.

Where it lives

In the Web UI, the instance's Tuning tab. On the command line it is part of the instance configuration:

Remote or localagainst prod-1
# odoocli instance config edit --instance acme

Tuning is a configuration change like any other, which means it is saved first and applied second. See Configuration and changes.

What the numbers mean

SettingEffect
WorkersHow many Odoo worker processes serve requests. More workers serve more concurrent users and cost more memory
Memory limitsSoft and hard limits per worker. A worker exceeding the hard limit is recycled
Time limitsHow long a request or a cron job may run before it is killed

Odoo's own rule of thumb is roughly one worker per six concurrent users, plus one, and the derived values follow that shape. The reason to override them is a workload that is not shaped like an average one: heavy reporting, large imports, or an instance that mostly serves cron jobs.

Sizing against the host

Workers are per instance, memory is per host. Ten instances each sized for fifty users will oversubscribe a machine that could serve five hundred users as one instance.

The Statistics and disk page shows host and per-container CPU and memory over time, which is the honest answer to whether the current sizing fits.