Skip to content
ERP Builders
ERP Development

Why Is Odoo Slow? A Performance Tuning Guide

Find out why Odoo is slow and how to fix it: worker settings, PostgreSQL tuning, indexes, custom code, scheduled actions, attachments and when to scale the server.

By ERP Builders Architecture Group2 min read

A slow Odoo is usually fixable. The trick is to find the real cause before spending money on a bigger server.

Step 1: measure

Write down which screens, reports or actions are slow and how long they take. "Everything is slow" usually turns out to be five specific actions. Note the time of day too; slowness at 2 p.m. every day often points to a scheduled action.

Step 2: check the server configuration

For self-hosted Odoo, check:

  • Workers: running Odoo with zero workers (threaded mode) in production limits concurrency. Use multi-worker mode.
  • Memory limits: limit_memory_soft and limit_memory_hard that are too low kill requests mid-way.
  • Time limits: long reports may hit limit_time_cpu or limit_time_real.
  • Proxy: a reverse proxy such as Nginx should serve static files and handle HTTPS.

Step 3: check PostgreSQL

Default PostgreSQL settings are conservative. Review shared_buffers, work_mem and effective_cache_size for your RAM. Enable slow-query logging to see which queries take longest. Missing indexes on custom fields used in searches are a frequent cause.

Make sure autovacuum runs. Heavily updated tables can bloat and slow down over time.

Step 4: profile the code

Odoo has a built-in profiler that shows where time goes in a request. Look for:

  • Stored computed fields recalculated on every write
  • Searches or reads inside loops (N+1 queries)
  • Overrides of create or write that do heavy work
  • Reports that load thousands of records one by one

Fixing one bad compute method can make a screen ten times faster.

Step 5: review scheduled actions

Scheduled actions that run every minute, or large jobs during office hours, compete with users. Move heavy jobs to the night and check that none are failing and retrying.

Step 6: clean up data

Years of mail messages, logs and attachments add weight. Archive or remove what you no longer need, and move the filestore to fast storage.

When to scale

Scale the server when CPU or memory is consistently high under normal load after the fixes above. Adding hardware first often hides the real problem until data grows again.

Odoo.sh and Odoo Online

On Odoo.sh you cannot tune the server, but code, data and scheduled actions are still in your control. On Odoo Online, contact Odoo support for platform issues.

Need help? Our Odoo performance optimization service finds the causes and fixes them with before-and-after timings.

Frequently asked questions

How many workers should Odoo use?

A common starting point is about two workers per CPU core plus one, adjusted for available memory and real load. Measure before and after changing it.

Can custom modules make Odoo slow?

Yes. Inefficient computed fields, searches inside loops and heavy overrides are among the most common causes of slow screens.

Written by

ERP Builders Architecture Group · Solution architecture

The engineers responsible for integration design, data migration tooling and performance work across ERP Builders projects.

Related articles

Odoo2 min read

Odoo Security Best Practices: A Checklist

An Odoo security checklist: HTTPS, database manager, admin passwords, two-factor login, access rights, API keys, updates, backups and log monitoring.

ERP Development2 min read

Odoo External API Guide for Integrations

How to integrate with Odoo's external API: authentication with API keys, JSON-2 vs XML-RPC, searching and writing records, integration users, limits and good practice.

ERP Development3 min read

Odoo 20 Access Rights: Migrating to ir.access

Odoo 20 removes record rules and merges them into access rights with domains. What changed, how to migrate ir.model.access.csv and ir.rule, and what to test.

Next step

Turn the plan into a working system.

Book a consultation with an ERP consultant. No sales script — just an honest look at your situation.