Skip links

Odoo Performance: Why It Slows and What to Do

Start by measuring, not guessing

“Odoo is slow” is not a problem statement. It is a feeling.

Slow where? Opening a specific screen, running a report, saving a record, loading the whole system, or only at certain times of day?

The answer changes everything. A slow report and a slow login have nothing in common, and buying a bigger server fixes neither in most cases.

Before anything else, get specific:

  • Which screen or action?
  • How long does it take? Time it.
  • Is it slow for everyone, or one person?
  • Is it slow all the time, or at particular hours?
  • When did it start?

That last question is the most useful. Performance rarely degrades gradually. It usually changes after something — a module installed, a data import, a new integration, a growth threshold crossed.

FIGURE 1: NARROW IT DOWN BEFORE YOU SPEND ANYTHING

Which action is slow?

  • One screen, one report, or everything? These have different causes.

How slow, in seconds?

  • Time it. “Slow” is not a measurement you can act on.

Who and when?

  • Everyone or one user. All day or at certain hours.

What changed?

  • A new module, an import, an integration. Performance rarely drifts on its own.

The usual causes

In rough order of how often they turn out to be the real problem.

1. A custom module

By a clear margin, the most common cause.

One inefficient piece of code — a calculation that runs on every record, a search inside a loop, a stored field recomputing constantly — can slow the whole system. Not just its own screen.

If performance changed after a module was installed, start there. It is the first thing an experienced person will check.

2. Third-party apps

The same problem, from apps installed from the app store. Quality varies enormously. A module that works fine with a thousand records can be unusable with a hundred thousand.

Install fewer, and test them with realistic data volumes before going live.

3. Too much data in one view

A list view with no filter, on a table with millions of rows, will be slow no matter how good your server is.

The fix is usually configuration: default filters, sensible list limits, and archiving what is no longer active.

4. Attachments

The filestore grows quietly. Scanned invoices, product photos, email attachments — a few years of these can become very large, and it affects backups more than screen speed.

Know how big yours is.

5. Reports over long periods

A report across five years of data will take longer than one across a month. Often this is simply expected behaviour, and the answer is a narrower default date range rather than an optimisation.

6. The server, genuinely

Sometimes it really is capacity — not enough memory, too few workers, a database that has outgrown its machine.

It is far less often the cause than people assume, which is why it belongs at the bottom of this list rather than the top.

FIGURE 2: WHERE PEOPLE LOOK AND WHERE THE PROBLEM USUALLY IS

Usually the real cause

  • A custom or third-party module
  • An unfiltered view over millions of rows
  • A report across years of data
  • An integration hammering the API

Where people look first

  • The server specification
  • The internet connection
  • The number of users
  • Odoo itself being “heavy”

Things worth doing routinely

Four habits that keep a system healthy.

Archive instead of deleting. Odoo can archive records — they leave the default views but stay available. Old customers, discontinued products, closed projects. This is safe and effective.

Set default filters. Most list views should open filtered to something useful, not to everything ever recorded.

Review installed modules yearly. Uninstall what is not used. Every module carries a cost even when nobody opens it.

Watch your filestore size. Know the number and how fast it is growing.

Things to leave to your technical partner

Not a business owner’s job, but worth recognising the terms when they come up.

Database maintenance. PostgreSQL needs periodic vacuuming and index maintenance. Neglected, it degrades steadily.

Worker configuration. Odoo runs multiple processes. Too few and users queue; too many and the server runs out of memory. It is a tuning exercise, not a bigger-is-better setting.

Query profiling. Odoo has developer tools that show exactly which database query is slow. This is how a real diagnosis is made, rather than by guessing.

Caching and static assets. A properly configured web server in front of Odoo makes a noticeable difference to page loads.

The trap to avoid

Buying a bigger server before diagnosing.

It is the most common response and often the least effective. If the cause is an inefficient module, more hardware buys you a slightly faster version of the same problem — and now you are paying more every month, forever.

Diagnose first. Sometimes the answer genuinely is capacity. Frequently it is one module, one query, or one unfiltered view.

When it is worth investigating

Not every slowness is worth a project. Ask what it costs.

Worth investigating: something people do many times a day that takes noticeably too long, or a system-wide slowdown affecting everyone.

Probably not worth it: a monthly report that takes two minutes. Run it with a coffee.

The calculation is simple — how many people, how many times a day, how many seconds. Multiply. If the answer is hours per week, it is worth fixing.

FIGURE 3: A SENSIBLE ORDER TO INVESTIGATE

Measure

  • Which action, how many seconds

Recent changes

  • Modules, imports, integrations

Data volume

  • Unfiltered views, long date ranges

Server

  • Only after the above are ruled out

What to ask a partner

If someone proposes a performance fix, ask:

  • What specifically did you measure, and what did it show?
  • Which change will produce the biggest improvement?
  • Is this a one-off fix or an ongoing cost?
  • If it is a custom module causing it, can that module be fixed?

A partner who can answer the first question with numbers is diagnosing. One who goes straight to a server recommendation is guessing.

The short version

Measure before you spend. Ask what changed. Suspect custom code first and the server last.

Most Odoo performance problems have a specific, findable cause — and the fix is usually cheaper than the hardware people reach for instead.

Odoo feeling slow and not sure why?

Get in touch. We will measure what is actually slow and find the cause before recommending anything that costs money.

Leave a comment

Drag