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.
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_softandlimit_memory_hardthat are too low kill requests mid-way. - Time limits: long reports may hit
limit_time_cpuorlimit_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
createorwritethat 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
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.
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.
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.