Skip to content
Guides

Why is my Odoo slow? 10 causes and fixes

A slow Odoo costs time on every click. Most cases come down to a handful of causes, and each one leaves clues. Here is how to find which one you have, and what to do about it, for Odoo Community and Enterprise on your own server.

Key takeaways

  • First work out the pattern: is it slow for everyone or one screen, all day or at certain times?
  • The most common causes are too few workers, too little memory and an untuned or bloated PostgreSQL.
  • Custom modules and heavy scheduled actions cause many of the rest. The Odoo log and query statistics point to them.
  • Fix one thing at a time and measure again. Bigger hardware hides problems but rarely solves them.

Start with the pattern of the slowness

Before changing anything, answer four questions. They narrow the list quickly:

  • Everyone or one person? One user only points to their browser, network or access rights. Everyone points to the server.
  • Every screen or one screen? One slow screen or report points to a query or custom code. Everything slow points to resources or configuration.
  • All day or at certain times? Slowness at the same time each day often matches a scheduled action, a backup or a peak of users.
  • Since when? If it started after an update, a new module or a data import, start there.

Then look at three things side by side: server CPU and memory charts, the Odoo log, and PostgreSQL's view of active and slow queries. Our guide on what to monitor on an Odoo server covers how to collect them.

Server-side causes of a slow Odoo

1. Too few workers

Each Odoo worker handles one request at a time. With too few, requests queue and everyone waits, even though the CPU is not busy. A server left in threaded mode, with workers = 0, is a common case on new installations.

Fix: run in multi-worker mode and size the number of workers to the CPU and the number of users. Odoo's deployment documentation gives a rule of thumb, and our Odoo server sizing guide turns it into a table.

2. Not enough memory

When workers and PostgreSQL need more RAM than the server has, it starts swapping and everything slows down. You may also see workers restarted in the log because they hit their memory limit.

Fix: check available memory and swap use. Reduce workers, lower the memory limits, or add RAM.

3. Burstable CPU or a slow disk

Some cheap cloud servers give full CPU speed only in short bursts. Once the credits run out, every request slows down. A slow or overloaded disk has a similar effect on PostgreSQL.

Fix: check whether your server type is burstable and whether CPU is being limited. For steady daily use, a non-burstable type is usually more predictable. Our Odoo on AWS guide explains this for EC2.

Database causes of a slow Odoo

4. PostgreSQL on its default settings

A fresh PostgreSQL installation uses small, safe defaults that leave most of a modern server unused.

Fix: size memory settings to the server, adjust settings for SSD storage and check connection limits. See our guide to PostgreSQL tuning for Odoo.

5. Slow queries and missing indexes

One slow screen or report is often a single query reading a whole table, usually filtering on a field that has no index.

Fix: turn on query statistics or slow-query logging, find the query, and test it with EXPLAIN ANALYZE on a staging copy. Add an index through the module that defines the field, not by hand in the database.

6. Table bloat

Busy tables collect dead rows that autovacuum has not cleaned up yet. Over months, tables grow far larger than their data and queries slow down.

Fix: keep autovacuum on, make it run earlier on large busy tables, and run ANALYZE after big imports.

Odoo application causes

7. Heavy scheduled actions during working hours

A scheduled action that recomputes thousands of records, syncs an integration or sends a large mailing competes with users for workers and the database. If Odoo is slow at the same time every day, check the Scheduled Actions screen.

Fix: move heavy jobs out of working hours, process them in smaller batches, and make sure you have enough cron threads for the jobs you run.

8. Custom code

Custom modules are behind many slow screens: loops that read records one by one, stored computed fields that recompute on every change, or onchange methods that run heavy queries.

Fix: profile the slow action on a staging copy, then rewrite the code to work on record sets in bulk. Test each change before it reaches production.

9. Too much on one screen

List views showing thousands of records, kanban views with heavy cards, or reports that render hundreds of pages are slow by nature.

Fix: use filters and grouping by default, archive old records you no longer need day to day, and split very large reports.

Network and browser causes

10. Distance, proxy and connection problems

A server far from its users adds delay to every request. A reverse proxy without compression or HTTP/2, or a broken websocket route, makes the interface feel sluggish and can show repeated connection errors.

Fix: host close to most users, turn on compression and HTTP/2 in Nginx, and route /websocket to Odoo correctly. Our guide to Odoo HTTPS setup covers the proxy settings.

How to fix Odoo slowness without making it worse

  • Change one thing at a time, and measure before and after.
  • Test on staging first for anything that touches code, indexes or data.
  • Don't only add hardware. A bigger server helps with resource limits, but not with a slow query, a heavy scheduled action or inefficient code.
  • Write it down. Note what you changed and why, so the next person does not undo it.

Odoo performance tools in CloudPilot

CloudPilot gives you the information and the settings in one place:

  • Server charts for CPU, memory, disk, load and PostgreSQL connections over the last hour, day or week.
  • Odoo settings in each instance's configuration: workers, cron threads, time and memory limits, the connection pool and the log level.
  • The Odoo log in the instance's Logs tab.
  • PostgreSQL tuning with one-click optimisation, query statistics with pg_stat_statements, and editable parameters.
  • Staging copies to test fixes before they reach users.

See managed Odoo hosting for what CloudPilot looks after, Server monitoring and alerts for the charts, and pricing for each plan.

Slow Odoo: questions

Why is Odoo slow for everyone at the same time each day?

Usually a scheduled action, a backup or a daily peak of users. Check the Scheduled Actions screen and the server's CPU and memory charts for that time, and move heavy jobs out of working hours.

Will a bigger server make Odoo faster?

Only if the server is short of CPU or memory. A slow query, a missing index, a heavy scheduled action or inefficient custom code stays slow on bigger hardware.

How many workers does Odoo need?

It depends on the CPU and the number of users. Odoo's deployment documentation gives a rule of thumb based on CPU cores, and memory decides how many workers the server can actually run.

Keep reading

PostgreSQL tuning for Odoo

PostgreSQL tuning for Odoo beyond memory: SSD and checkpoint settings, connection limits, finding slow queries, indexes and keeping autovacuum ahead of bloat.

What to monitor on an Odoo server

What to watch on an Odoo server: uptime, CPU, RAM and disk, PostgreSQL, worker restarts, scheduled actions, the email queue, backups and certificates.

Run Odoo on your own cloud

Deploy, back up and monitor Odoo on AWS, Google Cloud, Azure, Hetzner or any server. 14-day free trial.