DE · AT · CHRatgeber

Odoo-Server dimensionieren: CPU, RAM, Worker

Rechtsstand: · Aktualisiert:

Gilt für: Odoo 20.0; Community für die eigene Installation, Enterprise für Odoo Online, Odoo.sh und die eigene Installation; Multiprozess nur unter Linux

Kurz gesagt

Für eine eigene Installation gilt unter Linux die Faustregel der Odoo-Dokumentation 20.0 als Planungsrichtwert: rechnerisch zweimal die Prozessorkerne plus eins an Prozessen, ein Worker trägt rund sechs gleichzeitige Nutzer. Bei Odoo Online wählen Sie keine Hardware; bei Odoo.sh buchen Sie Worker und Speicher selbst und der Konfigurator nennt eigene Richtwerte. In Deutschland, Österreich und der Schweiz gelten dieselben Werte, weil sie am Hostingmodell hängen; entscheidend sind die gleichzeitigen Zugriffe in der Spitze, nicht die Zahl der Konten.

Das Wichtigste

  • Faustregel der Dokumentation 20.0 als Planungsrichtwert für die eigene Installation: Prozessorkerne mal zwei plus eins an Prozessen; ein Worker trägt rund sechs gleichzeitige Nutzer.
  • Je Worker: 150 MB für leichte, rund 1 GB für schwere Anfragen; die Seite setzt 80 zu 20 Prozent an.
  • Für Odoo.sh empfiehlt der Konfigurator einen zusätzlichen Worker je 25 Backend-Benutzer und je 5.000 Frontend-Besucher pro Tag.
  • Cron-Worker brauchen zusätzlich Prozessorleistung; als Vorgabe nennt die Referenz zwei Cron-Threads (max_cron_threads).
  • PostgreSQL 18: shared_buffers ist mit 128 MB voreingestellt; als Startwert nennt die Dokumentation 25 Prozent des Arbeitsspeichers, auf einem eigenen Datenbankserver mit mindestens 1 GB RAM.

Zwei Betriebe mit je 40 Mitarbeitenden brauchen nicht dieselbe Maschine: Der eine bucht Belege und Rechnungen, der andere betreibt zusätzlich einen Webshop, versendet Serienmails und lässt jede Nacht Auswertungen laufen. Die Rechnung der Odoo-Dokumentation setzt deshalb bei gleichzeitigen Zugriffen, Prozessen und Arbeitsspeicher je Worker an.

Wer die Größe festlegt

Bei Odoo Online hostet und verwaltet Odoo die private Datenbank selbst; Kerne und Arbeitsspeicher sind nicht Teil Ihrer Wahl. Das Hosting ist im Tarif enthalten; die Preisseite nennt unbegrenzten Speicherplatz bis zu 100 GB, ab mehr als 100 GB kann Odoo nach der Acceptable Use Policy einen Umzug auf Odoo.sh vorschlagen.

Bei Odoo.sh buchen Sie zusätzliche Datenbank-Worker über Ihren Account Manager; die Dokumentation verlangt dafür ein Odoo-Enterprise-Abonnement, das das Odoo.sh-Hosting einschließt. Abgerechnet wird in Einheiten: je Worker 60,00 Euro im Monat, bei jährlicher Zahlung 48,00 Euro, je GB Speicher 0,20 Euro (0,16 Euro), Stand 14. Oktober 2026; es sind Anbieterpreise, die sich ändern können, und die Seite nennt keine Umsatzsteuerangabe. Mehr als 16 Worker und 512 GB Speicher lassen sich im Konfigurator nicht direkt einstellen. Für die Größe empfiehlt der Konfigurator einen zusätzlichen Worker je 25 Backend-Benutzer und je 5.000 Frontend-Besucher pro Tag sowie zu Beginn 1 GB Speicher je Benutzer.

Bei einer eigenen Installation (On-Premise) wählen Sie Prozessor, Arbeitsspeicher und alle Werte selbst. Dort ist der Multiprozess-Betrieb der Produktionsmodus; er wird über die Option workers eingeschaltet. Bleibt sie auf ihrem Standardwert 0, läuft der Multithreading-Server, den die Dokumentation für Entwicklung und Demonstrationen nennt und der wegen der Python-Beschränkung (GIL) die Hardware nicht ausnutzt. Den Multiprozess-Betrieb nennt die Dokumentation nur für Linux und andere Unix-Systeme; unter Windows ist er nicht verfügbar.

Worauf es ankommt

Fünf Stellschrauben greifen ineinander; jede Zeile nennt ihre Quelle.

Stellschraube Regel in der Dokumentation 20.0 Wirkung
Prozessorkerne Faustregel: Prozesse = Kerne × 2 + 1 Planungsrichtwert für die Zahl der Prozesse samt Cron-Worker; keine technische Obergrenze
Gleichzeitige Nutzer ein Worker trägt rund sechs gleichzeitige Nutzer bestimmt die Zahl der HTTP-Worker
Art der Anfragen 80 Prozent leicht zu 150 MB, 20 Prozent schwer zu rund 1 GB je Worker bestimmt den Arbeitsspeicher
Cron-Aufträge Cron-Worker brauchen zusätzlich Prozessorleistung Hintergrundjobs; Vorgabe zwei Cron-Threads (max_cron_threads)
Livechat eigener Worker auf dem gevent-Port, Vorgabe 8072 ein zusätzlicher Prozess; Pfade unter /websocket/ müssen dorthin geleitet werden

Dimensionierungstabelle nach Nutzerzahl

Die folgende Tabelle ist eine Beispielrechnung nach den beiden Faustregeln der Dokumentation, keine Zusage des Anbieters. Angenommen sind: gleichzeitige Nutzer in der Spitze sind ein Viertel der angemeldeten Backend-Benutzer, gerundet; ein Worker trägt sechs gleichzeitige Nutzer; dazu kommt ein Cron-Worker; Frontend-Besucher und der Livechat-Worker sind nicht eingerechnet. Je Worker rechnet die Tabelle mit rund 325 MB (0,8 × 150 MB + 0,2 × 1 GB). Die Kerne sind so gewählt, dass die Prozesszahl in die Faustregel passt. Die Tabelle gilt für die eigene Installation; die Richtwerte des Odoo.sh-Konfigurators (ein zusätzlicher Worker je 25 Backend-Benutzer und je 5.000 Frontend-Besucher pro Tag) sind eine eigene Bezugsgröße für das gehostete Angebot und werden mit dieser Tabelle nicht verrechnet.

Angemeldete Benutzer Gleichzeitige Nutzer (Annahme) HTTP-Worker Prozesse mit Cron-Worker Prozessorkerne Arbeitsspeicher für Odoo (GB)
10 3 1 2 1 0,6
25 6 1 2 1 0,6
50 13 3 4 2 1,3
100 25 5 6 3 1,9
200 50 9 10 5 3,2
300 75 13 14 7 4,4

Die Spalte Arbeitsspeicher betrifft nur die Odoo-Prozesse. Für Odoo.sh nennt der Konfigurator zusätzlich einen Worker je 5.000 Frontend-Besucher pro Tag; für die eigene Installation ist die Zahl der gleichzeitigen Zugriffe maßgeblich.

So rechnet die Dokumentation selbst

Die Bereitstellungsseite führt ein eigenes Beispiel: 4 Prozessorkerne, 8 Threads und 60 gleichzeitige Benutzer. Aus 60 ÷ 6 folgt die theoretisch benötigte Zahl von 10 Workern, aus der Faustregel 4 × 2 + 1 die theoretische Maximalzahl von 9 Prozessen. Sie setzt deshalb 8 HTTP-Worker und einen Cron-Worker an und kommt auf 9 × (0,8 × 150 MB + 0,2 × 1.024 MB) ≈ 3 GB Arbeitsspeicher für Odoo. Zum Schluss empfiehlt die Seite, die CPU-Auslastung zu messen und zu prüfen, ob der Wert zwischen 7 und 7,5 liegt.

Die Grenzen je Prozess stehen im selben Beispiel in der Konfigurationsdatei: limit_memory_soft 600 MiB, limit_memory_hard 1.600 MiB, max_cron_threads 1 und workers 8. Der Prozess-Verwalter überwacht die Grenzen: Wird limit_memory_soft überschritten, beendet und ersetzt er den Worker am Ende der laufenden Anfrage; überschreitet ein Worker limit_memory_hard, beendet er ihn sofort, ohne das Ende der Anfrage abzuwarten. Die Optionsreferenz nennt als Vorgabe 2.048 MiB (weich) und 2.560 MiB (hart).

Was PostgreSQL zusätzlich braucht

Odoo hält eigene Verbindungen zur Datenbank; das Konfigurationsbeispiel der Bereitstellungsseite setzt dafür max_connections = 80. PostgreSQL nennt als Vorgabe typischerweise 100 Verbindungen und weist darauf hin, dass ein höherer Wert mehr Ressourcen belegt, darunter Shared Memory; bei System-V-Semaphoren belegt jede erlaubte Verbindung ein Semaphor. Setzen Sie die Obergrenze über die Zahl Ihrer Odoo-Prozesse, aber nicht beliebig hoch.

shared_buffers ist mit 128 MB voreingestellt; als angemessenen Startwert nennt die PostgreSQL-Dokumentation 25 Prozent des Arbeitsspeichers, ausdrücklich für einen eigenen Datenbankserver mit mindestens 1 GB RAM, und auf Systemen unter 1 GB einen kleineren Anteil. work_mem (Vorgabe 4 MB) gilt je Sortier- oder Hash-Operation, und mehrere Sitzungen können gleichzeitig rechnen, sodass der Verbrauch ein Vielfaches dieses Werts erreicht. effective_cache_size (Vorgabe 4 GB) reserviert dagegen keinen Speicher; er ist nur eine Annahme für den Abfrageplaner.

Typische Fehler

  • Nach Konten statt nach Zugriffen rechnen. Die Dokumentation rechnet in gleichzeitigen Nutzern, nicht in angelegten Konten; wie viele davon in der Spitze gleichzeitig arbeiten, ist keine Anbietergabe, sondern eine Annahme, die Sie schätzen und später messen müssen.
  • Multithreading im Produktivbetrieb lassen. Ohne gesetzte Option workers läuft der Multithreading-Server, den die Dokumentation für Entwicklung und Demonstrationen nennt.
  • Speichergrenzen stehen lassen, ohne den Bedarf zu kennen. Überschreitet ein Worker limit_memory_soft, wird er am Ende der laufenden Anfrage beendet und ersetzt; überschreitet er limit_memory_hard, beendet der Prozess-Verwalter ihn sofort, und die laufende Anfrage bricht ab. Beide Grenzen gehören über den gemessenen Bedarf gelegt.
  • Nur Odoo rechnen. shared_buffers, work_mem je Sitzung und der Betriebssystem-Cache liegen außerhalb der Formel und brauchen eigenen Arbeitsspeicher.
  • Mehr Worker als Rechenzeit. Odoo.sh hält ausdrücklich fest, dass zusätzliche Worker nur mehr gleichzeitige Verbindungen erlauben; langsame Vorgänge beheben sie nicht.

So gehen Sie vor

  1. Zählen Sie die gleichzeitigen Zugriffe in Ihrer Spitzenstunde, nicht die angelegten Konten. Backend, Portal und Website zählen Sie getrennt.
  2. Nehmen Sie die Zeile der Tabelle, die über Ihrer Zählung liegt, und runden Sie nach oben.
  3. Tragen Sie workers, max_cron_threads und die Speichergrenzen in die Konfigurationsdatei ein und richten Sie den Proxy so ein, dass Pfade unter /websocket/ am Livechat-Worker ankommen.
  4. Messen Sie danach die Auslastung, wie es die Bereitstellungsseite empfiehlt; bleibt der Prozessor dauerhaft am Anschlag, hilft die Ursachensuche im Artikel Odoo ist langsam mehr als eine größere Maschine.
  5. Dimensionieren Sie PostgreSQL mit: Verbindungsplätze über der Zahl Ihrer Odoo-Prozesse und shared_buffers als Anteil des Arbeitsspeichers; die 25 Prozent nennt die PostgreSQL-Dokumentation für einen eigenen Datenbankserver mit mindestens 1 GB RAM.
  6. Planen Sie Speicherplatz ein: Datenbank, Dateiablage und Sicherungen wachsen mit; für Odoo.sh empfiehlt der Konfigurator zu Beginn 1 GB je Benutzer. Den Ablauf beschreibt Odoo sichern.

Häufige Fragen

Zählen die Benutzerkonten oder die gleichzeitigen Zugriffe?

Die gleichzeitigen Zugriffe. Die Faustregel der Bereitstellungsseite rechnet sechs gleichzeitige Nutzer je Worker; der Konfigurator für Odoo.sh rechnet dagegen in angemeldeten Backend-Benutzern (ein zusätzlicher Worker je 25) und getrennt in Frontend-Besuchern (ein zusätzlicher Worker je 5.000 pro Tag). Wie viele Konten in der Spitze gleichzeitig arbeiten, ist keine Anbietergabe; setzen Sie für die Planung eine Spitze an und messen Sie sie später.

Reicht der Arbeitsspeicher, den die Formel ergibt?

Nein, sie deckt nur die Odoo-Prozesse. PostgreSQL und das Betriebssystem kommen hinzu: shared_buffers ist mit 128 MB voreingestellt, als Startwert nennt die PostgreSQL-Dokumentation 25 Prozent des Arbeitsspeichers auf einem eigenen Datenbankserver mit mindestens 1 GB RAM, und work_mem von 4 MB fällt je Sortier- oder Hash-Operation und je Sitzung mehrfach an. effective_cache_size reserviert dagegen keinen Speicher.

Was kostet mehr Größe bei Odoo.sh?

Der Konfigurator nennt je Worker 60,00 Euro im Monat, bei jährlicher Zahlung 48,00 Euro, je GB Speicher 0,20 Euro (0,16 Euro) und je Staging-Umgebung 15,00 Euro (12,00 Euro), Stand 14. Oktober 2026; eine Angabe zur Umsatzsteuer enthält die Seite nicht. Die Preisseite vermerkt, dass die Kosten für Odoo.sh-Hosting im Tarifpreis nicht enthalten sind. Anbieterpreise können sich ändern.

Was passiert, wenn ich mehr Worker einstelle, als die Faustregel vorsieht?

Dann teilen sich mehr Prozesse dieselben Prozessorkerne, und je Worker bleibt weniger Rechenzeit. Die Dokumentation nennt zweimal die Kerne plus eins als Faustregel für die Zahl der Prozesse und rät, die Auslastung zu messen; eine technische Obergrenze ist das nicht. Odoo.sh weist in seiner Hilfe darauf hin, dass zusätzliche Worker nur mehr gleichzeitige Verbindungen erlauben und langsame Vorgänge nicht beheben.

Quellen

  1. Systemkonfiguration (Odoo 20.0, deutsche Fassung der Bereitstellungsseite): Abschnitte Multiprocessing, Berechnung der Worker-Anzahl („Faustregel: (#CPU * 2) + 1", „1 worker ~= 6 gleichzeitige Benutzer"), Berechnung der Speicherplatzgröße (20 Prozent schwere Anfragen zu rund 1 GB, 80 Prozent leichte zu 150 MB), Livechat auf dem gevent-Port, Konfigurationsbeispiel mit 4 CPU, 60 gleichzeitigen Benutzern, 8 Workern, 1 Cron-Worker, rund 3 GB RAM und den Limitwerten, PostgreSQL-Beispiel mit max_connections = 80Odoo S.A., Dokumentation · abgerufen am
  2. System configuration (Odoo 20.0, englische Fassung derselben Seite): Builtin server (Multithreading als Standard, Multiprocessing ist Opt-in über --workers; laut Bemerkung für Linux angepasst und unter Windows nicht verfügbar), Worker number calculation, memory size calculation, Configuration sample („We'll use 8 workers + 1 for cron", theoretisch benötigte Worker 10 und theoretische Maximalzahl 9, Messung der CPU-Auslastung zwischen 7 und 7,5), Cron Workers mit --workers=-1 und --max-cron-threads=n, PostgreSQL mit max_connections = 80Odoo S.A., Dokumentation · abgerufen am
  3. Kommandozeilenoptionen (Odoo 20.0), Abschnitt Multiprocessing: Vorgabewerte für workers (0, Multithreading), limit-request, limit-memory-soft (2048 MiB; bei Überschreitung wird der Worker am Ende der laufenden Anfrage beendet und ersetzt), limit-memory-hard (2560 MiB; sofortiges Beenden ohne Abwarten des Anfrageendes), limit-time-cpu, limit-time-real, max-cron-threads (2), limit-time-worker-cron (0); gevent-port (8072); Hinweis, dass der Multiprozess-Modus nur auf Unix-Systemen verfügbar istOdoo S.A., Dokumentation · abgerufen am
  4. Odoo.sh – Einstellungen (Odoo 20.0), Abschnitt Database workers: zusätzliche Datenbank-Worker über den Account Manager; mehr Worker erhöhen die Zahl gleichzeitiger Verbindungen und beheben keine langsamen VorgängeOdoo S.A., Dokumentation · abgerufen am
  5. Odoo.sh – Einstellungen (Odoo 20.0, deutsche Fassung): Abschnitt Datenbank-Worker mit der Bezeichnung Account Manager für die Nachbuchung und der Bemerkung, dass weitere Worker nur die Anzahl gleichzeitiger Verbindungen erhöhenOdoo S.A., Dokumentation · abgerufen am
  6. Preis-Konfigurator für Odoo.sh, deutschsprachige Fassung: je Worker 60,00 Euro im Monat (48,00 Euro bei jährlicher Zahlung), je GB Speicher 0,20 Euro (0,16 Euro), je Staging-Umgebung 15,00 Euro (12,00 Euro), zugeordneter Server 500,00 Euro (400,00 Euro), Grenze von 16 Workern und 512 GB für die direkte Konfiguration; Hilfetexte „Wir empfehlen 1 zusätzlichen Worker pro 25 Backend-Benutzer und 1 zusätzlichen Worker pro 5.000 Frontend-Besucher pro Tag" und „Zu Beginn empfehlen wir 1 GB pro Benutzer"; eine Angabe zur Umsatzsteuer nennt die Seite nichtOdoo S.A. · abgerufen am
  7. Odoo.sh – Projekt erstellen (Odoo 20.0), Abschnitt Projekt erstellen: für ein Projekt verlangt die Seite den Abonnementcode eines Odoo-Enterprise-Abonnements, das das Odoo.sh-Hosting einschließtOdoo S.A., Dokumentation · abgerufen am
  8. Preise (deutschsprachige Preisseite), Abschnitt „Was in diesen Preisen nicht inbegriffen ist": Hosting auf Odoo Online ist im Tarif enthalten, mit unbegrenztem Speicherplatz bis zu 100 GBOdoo S.A. · abgerufen am
  9. Odoo Online (Odoo 20.0): Odoo Online bietet private Datenbanken, die von Odoo gehostet und verwaltet werdenOdoo S.A., Dokumentation · abgerufen am
  10. Odoo Cloud Acceptable Use Policy, Stand 7. Mai 2025, Abschnitt Network and Services Abuse, Punkt Unmetered Storage: Konten auf Odoo Online mit mehr als 100 GB Speicherverbrauch können geprüft werden; den Kunden kann ein Umzug auf Odoo.sh oder das Verkleinern der Daten vorgeschlagen werdenOdoo S.A. · abgerufen am
  11. Release Notes: Version 20, veröffentlicht im September 2026 (aktuell geführte Hauptversion)Odoo S.A. · abgerufen am
  12. PostgreSQL 18, 19.4 Resource Consumption: shared_buffers (Vorgabe 128 MB; als angemessener Startwert 25 Prozent des Arbeitsspeichers, ausdrücklich für einen dedizierten Datenbankserver mit 1 GB oder mehr RAM; auf Systemen unter 1 GB ein kleinerer Anteil), work_mem (Vorgabe 4 MB je Operation, mehrfach je Sitzung möglich)PostgreSQL Global Development Group · abgerufen am
  13. PostgreSQL 18, 19.7.2 Planner Cost Constants: effective_cache_size (Vorgabe 4 GB; belegt weder Shared Memory noch Kernel-Disk-Cache, sondern dient nur der Kostenschätzung des Planers)PostgreSQL Global Development Group · abgerufen am
  14. PostgreSQL 18, 19.3 Connections and Authentication: max_connections (Vorgabe typischerweise 100 Verbindungen; höhere Werte belegen mehr Ressourcen einschließlich Shared Memory)PostgreSQL Global Development Group · abgerufen am
  15. PostgreSQL 18, 18.4 Managing Kernel Resources: bei System-V-Semaphoren ein Semaphor je erlaubter Verbindung (max_connections)PostgreSQL Global Development Group · abgerufen am