Ihr n8n-Workflow läuft mit 200 Artikeln gut. Eines Tages sind es dann 5.000. Der Editor wird träge, die Ausführung dauert ewig, und der Container wird mit einem Absturz wegen Speichermangels neu gestartet.
Dieses Muster ist weit verbreitet. Es ist nicht so, dass n8n "nicht skalierbar" ist. Es geht darum, dass viele Arbeitsabläufe versehentlich zu Datenpipelines, die riesige Nutzdaten von Ende zu Ende transportieren und dann werden sie auch diese Nutzlast in der Ausführungshistorie speichern und machen Ihre Datenbank zu einem zweiten Engpass.
Dieser Leitfaden zeigt, wie beide Probleme in praktischer Reihenfolge gelöst werden können: Nutzlasten zuerst schrumpfen (Speicher) dann Kontrolle der Speicherung und des DB-Wachstums (Postgres) damit Ihre Arbeitsabläufe schnell und stabil bleiben.

Eine schnelle Triage-Checkliste (10 Minuten)
Bevor Sie etwas umgestalten, sollten Sie sich vergewissern, was tatsächlich schief läuft.
- Wenn der Prozess abbricht / neu startet: Sie stoßen wahrscheinlich an die Grenzen des Arbeitsspeichers (große Elemente, große Binärdateien oder zu viel Gleichzeitigkeit).
- Wenn der Editor und die Ausführungsseite langsam sind: Ihre Datenbank kann aufgebläht sein (große Ausführungshistorie, lange Speicherung, Vakuumprobleme).
- Wenn nur bestimmte Knotenpunkte langsam sind: Suchen Sie nach externen Engpässen (API-Ratenbeschränkungen, langsame DB-Abfragen, langsame Datei-E/A).
Schnell zu erfassende Metriken:
- Spitzenspeicherverbrauch während des langsamsten Ausführungsfensters.
- Durchschnittliche und P95/P99-Ausführungsdauer für Ihre umfangreichen Arbeitsabläufe.
- Wachstumsrate der Ausführungsgeschichte (wie viele Ausführungen/Tag und ob Sie vollständige Daten über den Erfolg speichern).
- Trend zur Datenbankgröße (wächst sie, auch wenn das Geschäftsvolumen stagniert?).
Schnell gewinnen: Wenn Sie heute nur eines tun, hören Sie auf, "Nice-to-have"-Felder mitzuführen. Behandeln Sie die Nutzlastgröße wie ein Budget. Kürzen Sie sie früh, und alles, was danach kommt, wird billiger.
Finden Sie den Hotspot der Nutzlast (wo die Daten explodieren)
Wenn sich ein Arbeitsablauf "mysteriöserweise" verlangsamt, hat das in der Regel zwei Ursachen:
- Ein einziger Knoten liefert eine umfangreiche Antwort (HTML, E-Mail-Text, Transkripte, vollständige CRM-Objekte).
- Eine kleine Antwort vervielfacht sich zu einer großen Anzahl von Elementen (Fan-out, verschachtelte Schleifen, Verzweigungen).
Um es schnell auf den Punkt zu bringen:
- Führen Sie den Arbeitsablauf mit einer repräsentativen Stichprobe durch (nicht mit 10 Artikeln, sondern mit 200-500, wenn das Ihre reale Welt ist).
- Schauen Sie sich die Ausführung an und identifizieren Sie den ersten Knoten, an dem die Ausgabegröße springt.
- Stellen Sie eine Frage: "Brauche ich das alles wirklich stromabwärts?"
Wenn die Antwort "Nein" lautet, optimieren Sie die nachgelagerten Knoten nicht. Reparieren Sie die Nutzlast an der Quelle.
Beispiel: Eine Agentur mit 10 Mitarbeitern reichert jede Nacht 2.000 Leads an. Der HTTP-Knoten sendet die vollständige Antwort des Anbieters (jeweils 30-200 KB) zurück, die dann von jedem nachgelagerten Knoten übernommen wird. Es werden nur
leadId,statusund 6 Anreicherungsfeldern wird jedes Element auf ~1-2 KB reduziert. Der Arbeitsablauf wird von "stürzt manchmal ab" zu stabil.
Was "Speichererweiterung" im n8n bedeutet (im Klartext)
Bei n8n durchläuft jeder Knoten Artikel vorwärts. Wenn Ihre Elemente riesige JSON-Blobs enthalten (API-Antworten, HTML-Seiten, vollständige CRM-Datensätze, Rohtranskripte), muss jeder nachgelagerte Knoten dieses Gewicht tragen.
Die Speicheraufblähung ist in der Regel auf eines dieser Muster zurückzuführen:
- Breite Artikel Zu viele Felder pro Element (große verschachtelte Objekte).
- Tiefe Gegenstände Einige Felder, die sehr umfangreich sind (HTML, base64, lange Arrays).
- Explodierender Fan-Out Ein Gegenstand wird zu Hunderten oder Tausenden, und Sie behalten das gesamte Objekt in jeder Verzweigung.
- Binäre Nutzlasten: Dateien werden durch den Arbeitsablauf bewegt und nicht extern gespeichert.
- Hohe Gleichzeitigkeit Mehrere schwere Ausführungen laufen gleichzeitig und konkurrieren um denselben Arbeitsspeicher.
Die Lösung ist nicht "einen Knoten optimieren". Die Lösung besteht darin kontrollieren, was Sie tragen und wie viele Artikel Sie auf einmal bearbeiten.
Lösung 1: Frühzeitige Filterung und "Budgetierung" der Nutzlast
Wenn Ihr Arbeitsablauf einen großen Datensatz abruft und nur 5 Felder benötigt, brauchen Sie keine 200 zu übertragen.
Praktische Möglichkeiten zur Verringerung der Nutzlast:
- Felder sofort nach Abruf löschen (nur das Verhalten "behalten" verwenden).
- Verflachen und umbenennen Felder, damit Sie das ursprüngliche verschachtelte Objekt nicht "nur für den Fall" behalten.
- Vermeiden Sie die Übergabe roher API-Antworten wenn Sie nur IDs oder ein paar Attribute benötigen.
Eine hilfreiche Regel: Wenn ein Feld in den nächsten 2-3 Knoten nicht verwendet wird, entfernen Sie es jetzt und holen es bei Bedarf später erneut ab.
Realitätsprüfung: Viele "n8n-Speicherprobleme" sind in Wirklichkeit "wir haben n8n in einen Datensee verwandelt". Wenn man jedes Feld ewig behält, wird es irgendwann kaputtgehen.
Fix 2: Alles stapeln, was sich stapeln lässt
Das Batching erfüllt zwei Aufgaben:
- Begrenzt den Spitzenbedarf an Speicherplatz (Sie halten nie den gesamten Datensatz auf einmal).
- Macht Wiederholungen sicherer (ein Batch kann es erneut versuchen, ohne den gesamten Auftrag erneut abzuspielen).
Batching-Muster, die in n8n gut funktionieren:
- Paginierung aus der Quelle 100-500 Datensätze pro Seite abrufen, verarbeiten und dann die nächste Seite abrufen.
- Aufteilung in Chargen: Verarbeiten Sie Teile von Elementen, übertragen Sie die Ergebnisse und fahren Sie dann fort.
- Massenhafte API-Aufrufe: Wenn das externe System Batch-Endpunkte unterstützt, verwenden Sie diese.
Wenn Sie derzeit tun "Fetch 10.000 Zeilen → Karte → bereichern → schreiben", ist die einfachste Refaktorierung:
- 500 Zeilen abrufen
- Saubere Nutzlast auf minimale Felder
- Anreicherung durch kontrollierte Gleichzeitigkeit
- Ergebnisse schreiben
- Weitergehen
Profi-Tipp: Die Chargengrößen sind ein Knackpunkt. Fangen Sie kleiner an, als Sie denken (100-500). Sobald sie stabil ist, erhöhen Sie sie langsam, während Sie den Spitzenspeicher und die Fehlerraten beobachten.
Fix 3: Große Blobs externalisieren (Dateien, HTML, Transkripte)
Große Blobs sind der schnellste Weg, um Abstürze aus dem Speicher auszulösen.
Wenn Sie verarbeiten:
- PDFs
- Bilder
- CSV-Exporte
- HTML-Seiten
- lange AI-Transkripte
...nicht den gesamten Inhalt über Dutzende von Knotenpunkten übertragen.
Stattdessen:
- Speichern Sie die Datei im Objektspeicher oder Dateisystem.
- Pass a Zeiger (URL, Schlüssel, Pfad, Dokument-ID).
- Laden Sie nur bei Bedarf nach.
Dies verringert auch den Platzbedarf Ihrer Datenbank, wenn Sie Ausführungsdaten speichern.

Korrektur 4: Keine Duplizierung großer Arrays in Code-Knoten
Code-Knoten sind leistungsstark, aber sie machen es leicht, versehentlich große Objekte zu kopieren.
Häufige Fehler der "stillen Aufblähung":
- Erstellung eines einzigen riesigen Arrays mit allen Ergebnissen, bevor etwas geschrieben wird.
- Zuordnung von Objekten zu neuen Objekten unter Beibehaltung des ursprünglichen Objekts.
- Wiederholtes Stringifying großer JSON-Dateien.
Sicherere Muster:
- Verarbeiten Sie eine Charge nach der anderen.
- Halten Sie die Ausgaben minimal (IDs + ein paar Felder).
- Frühzeitiges Schreiben nachgelagerter Daten (Datenbank, Tabellenkalkulation, CRM) anstelle der Erstellung der "Endausgabe" im Arbeitsspeicher.
Fix 5: Kontrollieren Sie die Gleichzeitigkeit, damit Sie Probleme mit der Nutzlast nicht verstärken
Eine schwere Ausführung kann in Ordnung sein. Zehn schwere Ausführungen können denselben Host zum Absturz bringen.
Praktische Kontrollen:
- Vermeiden Sie es, viele umfangreiche Arbeitsabläufe in der gleichen Minute zu planen (gestaffelte Cron-Zeitpläne).
- Verwenden Sie die warteschlangenbasierte Ausführung für schwerere Lasten (damit Sie die Arbeiter absichtlich skalieren können).
- Setzen Sie "teure Schritte" hinter ein Batch-Gate, damit die Gleichzeitigkeit nicht unerwartet in die Höhe schießt.
Wenn Sie Ihr System selbst hosten, sollten Sie die Gleichzeitigkeit als eine Variable für die Kapazitätsplanung betrachten. Es ist besser, 500 Elemente zuverlässig zu verarbeiten, als 10.000 zu versuchen und auf halbem Weg abzustürzen.
Konkrete n8n-Einstellungen, die Blähungen verhindern (mit offiziellen Dokumenten)
Mit Workflow-Refactors erreichen Sie das meiste davon. Aber wenn Ihre Instanz "alles für immer" behält, kehrt die Aufblähung zurück.
Hier sind die offiziellen Dokumente, die Sie öffnen sollten, während Sie die Einstellungen vornehmen:
- Speicherung und Bereinigung von Ausführungsdaten: Variablen der Ausführungsumgebung
- Sicheres Ausführen hoher Arbeitslasten: Konfigurieren des Warteschlangenmodus
- Verhindert, dass sich Dateien im RAM und in der DB befinden: Binäre Daten
Eine sichere Ausgangsbasis (Beispiele, keine Einheitsgröße)
Wenn Sie ein kleines Unternehmen sind, das hochvolumige Arbeitsabläufe (Anreicherung, Lead Scraping, Synchronisierungsaufträge) durchführt, ist ein sicheres "Stop the bleeding"-Basisniveau:
- Speichern Sie nicht die vollständigen Ausführungsdaten bei Erfolg.
- Bewahren Sie die vollständigen Ausführungsdaten im Fehlerfall auf.
- Ausführungsverlauf automatisch bereinigen.
- Vermeiden Sie bei großen Dateien die Speicherung von Binärdaten im Speicher.
Die n8n-Dokumente enthalten zum Beispiel Einstellungen zur Aufrechterhaltung der Ausführung wie EXECUTIONS_DATA_SAVE_ON_SUCCESS, EXECUTIONS_DATA_SAVE_ON_ERRORund EXECUTIONS_DATA_MAX_AGE (siehe den Verweis auf die Umgebungsvariable executions oben).
# Execution history retention (example baseline)
EXECUTIONS_DATA_SAVE_ON_SUCCESS=none
EXECUTIONS_DATA_SAVE_ON_ERROR=all
EXECUTIONS_DATA_PRUNE=true
EXECUTIONS_DATA_MAX_AGE=168
# Optional: cap how many executions exist overall (0 = no limit)
EXECUTIONS_DATA_PRUNE_MAX_COUNT=10000
Für große Dateien wird in den n8n-Binärdaten-Dokumenten erklärt, wie man von der In-Memory-Verarbeitung wegkommt, indem man N8N_DEFAULT_BINARY_DATA_MODE (z. B. auf Dateisystemspeicher) und wie man externen Speicher wie S3-kompatiblen Objektspeicher konfiguriert.
# Binary data handling (example baseline)
N8N_DEFAULT_BINARY_DATA_MODE=filesystem
Wenn Sie mit vielen Dateien zu tun haben, sollten Sie die Speicherung von Objekten in Betracht ziehen. In den n8n-Dokumenten zu Binärdaten wird die Verwendung von S3 als externer Speicher beschrieben (beachten Sie, dass Sie in der Praxis Regeln für den Lebenszyklus von Eimern festlegen sollten, damit sich alte Binärobjekte nicht unendlich ansammeln): Binäre Daten.
Wenn Sie zwischen den Modi wechseln (z. B. vom Dateisystem zu S3), sollten Sie auch die Abwärtskompatibilität im Auge behalten. n8n unterstützt das Vorhalten mehrerer Modi, so dass ältere Ausführungen weiterhin gelesen werden können (siehe N8N_AVAILABLE_BINARY_DATA_MODES in derselben Binärdatendokumentation).
Realitätsprüfung: Dies sind absichtlich konservative Standardwerte. Wenn Sie Compliance- oder Audit-Anforderungen haben, sollten Sie die Aufbewahrungsfrist verlängern, aber nur minimale Daten (IDs, Status, Zeitstempel) und keine vollständigen Nutzdaten speichern.
Warteschlangenmodus + Gleichzeitigkeitsleitplanken (bei Skalierung)
Wenn Ihr Problem darin besteht, dass wir Spitzen bekommen und alles auf einmal läuft, kann der Warteschlangenmodus Ihnen helfen, den Ausführungsdurchsatz vorhersehbar zu machen und absichtlich Worker hinzuzufügen. n8n dokumentiert die Konfiguration des Warteschlangenmodus hier: Konfigurieren des Warteschlangenmodus.
Der Verweis auf die Umgebungsvariable executions dokumentiert auch Einstellungen wie EXECUTIONS_MODE (regulär vs. Warteschlange): Variablen der Ausführungsumgebung.
Und wenn Sie nur ein einfaches Sicherheitsventil brauchen, dokumentiert n8n eine Produktionsgleichzeitigkeitsgrenze über N8N_CONCURRENCY_PRODUCTION_LIMIT (siehe die oben genannten Dokumentseiten für weitere Einzelheiten).
# Example: enable queue mode + cap concurrent production executions
EXECUTIONS_MODE=queue
N8N_CONCURRENCY_PRODUCTION_LIMIT=20
Die versteckte Verbindung zwischen Speichererweiterung und Datenbankengpässen
Auch nach der Beseitigung von Speicherplatzmangel kann die Leistung mit der Zeit abnehmen, wenn das System weiterläuft:
- jede Ausführung
- mit vollständigen Daten
- monatelang
Der Ausführungsverlauf ist nützlich, aber er ist nicht kostenlos. Wenn Sie große Nutzdaten in Ausführungen speichern, wachsen Ihre Postgres-Tabellen, die Abfragen werden langsamer und die Benutzeroberfläche beginnt zu hinken.
Die zweite Hälfte der Skalierung n8n ist also: Rückhaltung und Beschneidung.
Schritt 2: Halten Sie die Ausführungshistorie nützlich (nicht unendlich)
Ihr Ziel ist es, genug Geschichte zu behalten, um:
- Fehler zu beheben,
- Prüfung wichtiger Arbeitsabläufe,
- Trends erkennen.
Aber man braucht nicht für jeden Arbeitsablauf unbegrenzt viele "Erfolgs"-Nutzlasten.
Praktische Aufbewahrungsregeln für SBO-Anwendungsfälle:
- Arbeitsabläufe mit hohem Volumen und geringem Risiko (Synchronisationen, Anreicherungen): kurze Aufbewahrungsfrist, Speicherung minimaler Ausführungsdaten.
- Workflows für Geldbewegungen (Rechnungsstellung, Auszahlungen): längere Aufbewahrungsfrist, aber nur minimale Datenspeicherung und Protokollierung der wichtigsten Daten (IDs, Beträge, Status).
- Compliance-relevante Arbeitsabläufe: Definieren Sie explizite Aufbewahrungsanforderungen und setzen Sie diese dann bewusst um.
Eine einfache Beibehaltungsmatrix (kopieren und anpassen)
Hier ist ein praktischer Ausgangspunkt für viele kleine Unternehmen. Ziel ist es, die Fehlerbehebung und die Prüfungsmöglichkeiten zu erhalten und gleichzeitig die Datenbank schlank zu halten.
| Workflow-Typ | Typisches Volumen | Erfolgsdaten behalten | Fehlerdaten behalten | Notizen |
|---|---|---|---|---|
| CRM-Synchronisierung/Anreicherung | Hoch | Minimal oder gar nicht | Vollständig | Speichern von Datensatz-IDs und Ergebnissen, keine vollständigen Nutzdaten. |
| Lead-Aufnahme / Formulare | Mittel | Minimal | Vollständig | Behält Anfrage-IDs und Validierungsfehler bei. |
| Billing / Payouts | Low-Medium | Minimal | Full + longer | Keep transaction IDs, amounts, and status changes. |
| Dateiverarbeitung (PDF/CSV) | Mittel | Minimal | Vollständig | Dateien extern speichern; Dateischlüssel in Ausführungen behalten. |
Wenn Sie wollen, dass die Benutzeroberfläche schnell bleibt, ist die Kombination am wichtigsten: speichern Sie keine umfangreichen Erfolgsdaten + automatisch beschneiden + Binärdateien aus dem RAM/DB heraushalten.
Wenn Ihre DB zum Nadelöhr wird (Symptome)
Sie sind wahrscheinlich datenbankgebunden, wenn Sie sehen:
- Das Laden der Ausführungsliste dauert einige Sekunden (oder ist zeitlich begrenzt).
- Editor-Speicherungen sind langsam oder die Benutzeroberfläche fühlt sich "klebrig" an.
- Die Festplattennutzung nimmt stetig zu, obwohl sich die Workflow-Logik nicht geändert hat.
- Abfragen oder Backups dauern jede Woche länger.
An diesem Punkt hilft das Hinzufügen von CPU oder RAM weniger als das Beheben von Wachstum und Aufblähung.
DB-Engpass-Checkliste (schnell, praktisch)
Wenn Sie den Verdacht haben, dass Postgres der Engpass ist, zeigen Ihnen diese Prüfungen normalerweise den richtigen Weg:
- Wächst die Ausführungsgeschichte schneller als das Geschäftsvolumen? Wenn ja, ist die Beibehaltung die erste Lösung.
- Fühlen sich Seiten, die Abfragen ausführen, langsam an? Das ist oft "zu viel Geschichte" oder langsame Abfragen bei großen Tabellen.
- Speichern Sie große Nutzlasten auf Erfolg? Wenn ja, zahlen Sie zweimal dafür (DB-Speicher und Abfragezeit).
- Hält das Autovakuum Schritt? Wenn das nicht der Fall ist, lässt die Leistung allmählich nach und kommt dann plötzlich.
- Haben Sie genügend Speicherplatz auf der Festplatte? Bei fast vollen Festplatten wird aus "leichten Verlangsamungen" oft "alles ist langsam".
Sie brauchen keine Perfektion. Sie brauchen ein System, das standardmäßig gesund bleibt: Bereinigen Sie Ausführungsdaten, halten Sie Binärdateien aus der DB heraus und lassen Sie die Routinewartung ihre Arbeit tun.
Postgres-Hygiene: ein kleines Runbook, das einen großen Ausfall verhindert
Sie müssen kein DBA werden, aber Sie brauchen einen Rhythmus.
Wenn Sie PostgreSQL verwenden, sollten Sie wissen, was VACUUM und autovacuum auf einer hohen Ebene tun. Die offizielle Dokumentation von PostgreSQL enthält eine klare Erklärung des routinemäßigen Vakuumierens und warum es für die Rückgewinnung von Speicherplatz durch Aktualisierungen/Löschungen wichtig ist: Routine-Vakuumierung (PostgreSQL-Dokumente).
Was das Beschneiden behebt (und was nicht)
Durch das Bereinigen des Ausführungsverlaufs wird die Datenmenge reduziert, die Sie behalten. Beim Vakuumieren geht es darum, Speicherplatz zurückzugewinnen und die Tabellenstatistiken zu erhalten. Normalerweise brauchen Sie beides:
- Pflaume um das endlose Wachstum zu stoppen.
- Vakuum/Autovakuum um die Leistung konstant zu halten, wenn Zeilen eingefügt/aktualisiert/gelöscht werden.
Wenn Ihre DB bereits sehr groß ist, wird das Beschneiden helfen, aber es kann einige Zeit (und Wartung) dauern, bis sich die Benutzeroberfläche wieder schnell anfühlt".
Wöchentlich (15 Minuten):
- Prüfen Sie den Trend der Datenbankgröße.
- Bestätigen Sie, dass die Beschneidung/Erhaltung funktioniert.
- Suchen Sie nach den ersten 1-3 langsamen Suchanfragen (wenn Sie eine Überwachung haben).
Monatlich (30-60 Minuten):
- Überprüfen Sie den Zustand von Tabellen und Autovakuum.
- Validierung von Backups und Wiederherstellungszeit.
- Überprüfen Sie die Aufbewahrungsregeln erneut (Änderung der Geschäftsanforderungen).
Wichtige Erkenntnis: DB-Leistungsprobleme fühlen sich in der Regel "plötzlich" an, sind aber fast immer auf ein allmähliches Wachstum und verpasste Wartung zurückzuführen.
Häufige Fehler, die immer wieder auftauchen
- "Wir werden einfach RAM hinzufügen." Es funktioniert, bis es nicht mehr funktioniert, und dann sind Abstürze schwieriger zu beheben.
- "Wir werden die Vollstreckungen für immer beibehalten." Ihre DB wird schließlich über Kosten und Zuverlässigkeit dominieren.
- "Wir brauchen die vollständige API-Antwort später." Das tun Sie fast nie. Behalten Sie die IDs und holen Sie sie wieder ab.
- "Wir werden alles auf einmal bearbeiten, um schneller fertig zu werden." Wenn es bei 90 % abstürzt, werden Sie langsamer fertig.
Was als nächstes zu tun ist (in der Reihenfolge)
Wenn Sie eine sichere, wiederholbare Vorgehensweise wünschen, gehen Sie in dieser Reihenfolge vor:
- Nutzlasten frühzeitig schrumpfen (Felder fallen lassen, riesige Objekte vermeiden, Blobs externalisieren).
- Stapeln Sie den Arbeitsablauf (Begrenzung des Spitzenspeichers und Verringerung der Wiederholungen).
- Kontrolle der Gleichzeitigkeit (Vermeidung versehentlicher paralleler "RAM-Stürme").
- Regeln für die Aufbewahrung festlegen (die Geschichte soll nützlich und nicht unendlich sein).
- DB-Hygiene hinzufügen (Vermeidung von langsamen Benutzeroberflächen, langsamen Abfragen und Aufblähung mit der Zeit).
Wenn Sie bereits an Leistungsverbesserungen für das n8n arbeiten, sind diese Anleitungen vielleicht auch für Sie interessant:
- Techniken zur Optimierung des n8n-Workflows (vollständiger Leitfaden)
- So verbessern Sie die Leistung des n8n-Workflows
Sind Sie bereit, Ihre Arbeitsabläufe in großem Umfang ohne Versuch und Irrtum zu stabilisieren? Buchen Sie eine Demo mit Evalics
Von Kevin Michael Schindler, Spezialist für KI-Automatisierung bei Evalics.
