tva
← Insights

n8n-Fehler „Existing execution data is too large“: Die vollständige Lösung für selbst betriebene Instanzen

Self-Hosting mit n8n bietet Ihnen unbegrenzte Workflow-Ausführungen und vollständige Kontrolle, aber komplexe Workflows mit großen Datensätzen können frustrierende Fehler auslösen, die Sie in Ihrer eigenen Serverkonfiguration beheben müssen. Wenn Sie die Meldung „Please execute the whole workflow, rather than just the node. (Existing execution data is too large.)“ beim Testen einzelner Nodes sehen, haben Sie das Größenlimit der Nutzlast erreicht. Wir zeigen Ihnen, wie Sie diese Einschränkung identifizieren, beheben und für n8n-Installationen im Produktivbetrieb optimieren.

Das Problem: Wenn Workflow-Tests fehlschlagen

Sie haben erfolgreich Ihre n8n-Instanz eingerichtet und stabile Webhook-Funktionalität konfiguriert, aber jetzt erstellen Sie anspruchsvollere Workflows, die Dateien, große API-Antworten oder Datensätze verarbeiten. Beim Ausführen des gesamten Workflows funktioniert alles einwandfrei, aber sobald Sie versuchen, einen einzelnen Node zu testen oder Teilausführungen durchzuführen, gibt n8n die gefürchtete Fehlermeldung aus.

Dies geschieht, weil n8n ein Standardlimit von 16 MB für die Daten einer Teilausführung hat, das für einfache Workflows ausreicht, aber zum Engpass wird, sobald Sie Datenvolumen aus der Praxis verarbeiten.

Was Sie mit dieser Anleitung erreichen

Am Ende dieses Leitfadens haben Sie:

  • ✅ Das Größenlimit der Nutzlast von 16 MB auf 256 MB oder einen benutzerdefinierten Wert erhöht
  • ✅ Funktionierende Teilausführungen für komplexe Workflows mit großen Datensätzen
  • ✅ Eine angemessene Ressourcenzuweisung unter Berücksichtigung der RAM-Grenzen Ihres Servers
  • ✅ Ein Monitoring zur laufenden Überwachung der Speichernutzung
  • ✅ Eine für den Produktivbetrieb geeignete Konfiguration, die Dateiverarbeitungs-Workflows bewältigt
  • ✅ Verfahren für Backups und das Rücksetzen von Konfigurationsänderungen

Voraussetzungen

  • Funktionierende n8n-Installation (vorzugsweise aus unserem Hetzner-Einrichtungsleitfaden)
  • n8n läuft in Docker-Containern
  • SSH-Zugang zu Ihrem Server
  • Grundlegendes Verständnis von Docker-Compose-Umgebungsvariablen
  • Mindestens 3 GB verfügbarer RAM (empfohlen für ein Nutzlastlimit von 256 MB)

Die Ursache verstehen

Warum selbst betriebenes n8n Nutzlastlimits hat

Wenn Sie Teilausführungen durchführen (einzelne Nodes testen), muss n8n den Workflow-Status und die Daten serialisieren und an das Backend übertragen. Dies umfasst:

  • Alle Eingabedaten von vorherigen Nodes
  • Workflow-Logik und Node-Konfigurationen
  • Ausführungskontext und Variablen
  • Binärdaten und Dateiinhalte

Der Standardwert N8N_PAYLOAD_SIZE_MAX=16 (16 MiB; der Wert wird in MiB angegeben) wurde für typische API-Antworten und einfache Datenverarbeitung konzipiert. Moderne Workflows verarbeiten jedoch häufig:

❌ Häufige Szenarien, die 16 MB überschreiten:

  • Hochladen und Verarbeiten von Dateien (PDFs, Bilder, Tabellen)
  • Große API-Antworten von Datenquellen
  • Umwandlung großer Datenmengen
  • Mehrstufige Workflows mit angesammelten Daten

✅ Was nach der Behebung passiert:

  • Teilausführungen funktionieren mit großen Datensätzen
  • Dateiverarbeitungs-Workflows werden testbar
  • Komplexe Datentransformationen können Node für Node auf Fehler untersucht werden

Die fehlende Konfiguration

Die Lösung ist die Umgebungsvariable N8N_PAYLOAD_SIZE_MAX, die die maximale Größe der Anfrage-Nutzlast in MiB festlegt, einschließlich der Daten, die der Editor für Teilausführungen sendet. Überschreitet eine Anfrage das Limit, antwortet n8n mit HTTP 413 und der Editor zeigt diesen Fehler an. Bei n8n Cloud verwaltet n8n diese Einstellung für Sie; selbst betriebene Instanzen verwenden den vorsichtigen Standardwert von 16 MiB.

Schritt 1: Ihre aktuelle Konfiguration prüfen

Serverressourcen prüfen

Bevor Sie Nutzlastlimits erhöhen, überprüfen Sie, ob Ihr Server größere Speicherzuweisungen bewältigen kann:

# Check available memory
free -h

# Check current Docker container memory usage
docker stats --no-stream | grep n8n

# Check total system resources
htop

Speicheranforderungen:

  • Nutzlastlimit von 64 MB: mindestens 1 GB verfügbarer RAM
  • Nutzlastlimit von 128 MB: mindestens 2 GB verfügbarer RAM
  • Nutzlastlimit von 256 MB: mindestens 3 GB verfügbarer RAM

Aktuelles Limit ermitteln

Prüfen Sie, ob N8N_PAYLOAD_SIZE_MAX konfiguriert ist:

# Navigate to your n8n directory (adjust path as needed)
cd /opt/n8n

# Check current environment variables
cat docker-compose.yml | grep -A 30 "environment:"

# Look for payload size configuration
grep "N8N_PAYLOAD_SIZE_MAX" docker-compose.yml || echo "Not configured - using 16MB default"

Den Fehler reproduzieren

Erstellen Sie einen Test-Workflow, um das Problem zu reproduzieren:

  1. Öffnen Sie Ihre n8n-Oberfläche
  2. Erstellen Sie einen Workflow mit einem großen Datensatz (z. B. HTTP-Anfrage an eine API, die mehr als 16 MB zurückgibt)
  3. Versuchen Sie, nur einen nachgelagerten Node auszuführen
  4. Überprüfen Sie, ob der Fehler „Existing execution data is too large“ erscheint

Schritt 2: Das Hauptproblem beheben – Nutzlastgröße erhöhen

Für eine einzelne n8n-Instanz

Wenn Sie eine einzelne n8n-Installation haben:

cd /opt/n8n

# Create backup first
cp docker-compose.yml docker-compose.yml.backup_$(date +%Y%m%d_%H%M)

# Edit the configuration
nano docker-compose.yml

Fügen Sie die Umgebungsvariable N8N_PAYLOAD_SIZE_MAX Ihrer bestehenden Konfiguration hinzu:

version: '3'

services:
  n8n:
    image: n8nio/n8n:latest
    restart: always
    environment:
      - N8N_HOST=n8n.yourdomain.com
      - NODE_ENV=production
      - N8N_PROTOCOL=https
      - N8N_PORT=5678
      - N8N_EDITOR_BASE_URL=https://n8n.yourdomain.com
      - N8N_EMAIL_MODE=smtp
      - N8N_SMTP_HOST=mailserver
      - N8N_SMTP_PORT=25
      - N8N_SMTP_SSL=false
      - N8N_SMTP_USER=
      - N8N_SMTP_PASS=
      - [email protected]
      - N8N_TRUST_PROXY_HEADER=true
      - N8N_RUNNERS_ENABLED=true
      - WEBHOOK_URL=https://n8n.yourdomain.com
      # ADD THIS LINE - Increases payload limit to 256MB (value in MiB)
      - N8N_PAYLOAD_SIZE_MAX=256
    volumes:
      - ./data:/home/node/.n8n
    networks:
      - proxy
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.n8n.rule=Host(`n8n.yourdomain.com`)"
      - "traefik.http.routers.n8n.entrypoints=https"
      - "traefik.http.routers.n8n.tls.certresolver=letsencrypt"
      - "traefik.http.services.n8n.loadbalancer.server.port=5678"

networks:
  proxy:
    external: true

Für mehrere n8n-Instanzen

Wenn Sie mehrere n8n-Instanzen betreiben, aktualisieren Sie jede einzelne:

# First instance
cd /opt/n8n
cp docker-compose.yml docker-compose.yml.backup_$(date +%Y%m%d_%H%M)
sed -i '/N8N_RUNNERS_ENABLED=true/a\      - N8N_PAYLOAD_SIZE_MAX=256' docker-compose.yml

# Second instance (adjust path as needed)
cd /opt/n8n-team2
cp docker-compose.yml docker-compose.yml.backup_$(date +%Y%m%d_%H%M)
sed -i '/N8N_RUNNERS_ENABLED=true/a\      - N8N_PAYLOAD_SIZE_MAX=256' docker-compose.yml

Container neu starten

Änderungen anwenden:

# For single instance
cd /opt/n8n
docker compose down && docker compose up -d

# For multiple instances
cd /opt/n8n
docker compose down && docker compose up -d
cd /opt/n8n-team2
docker compose down && docker compose up -d

# Verify containers are running
docker ps | grep n8n

Schritt 3: Die Korrektur überprüfen

Container-Protokolle prüfen

Überprüfen Sie, ob die Container erfolgreich gestartet wurden:

# Check main instance logs (adjust container name as needed)
docker logs n8n-n8n-1 --tail 20

# Check for any startup errors
docker logs n8n-n8n-1 | grep -i "error\|failed\|warning"

Das erhöhte Nutzlastlimit testen

Gehen Sie zurück zu Ihrem Test-Workflow, der fehlgeschlagen ist:

  1. Öffnen Sie den Workflow mit dem großen Datensatz
  2. Versuchen Sie, einen einzelnen nachgelagerten Node auszuführen
  3. Überprüfen Sie, dass der Fehler „Existing execution data is too large“ verschwunden ist
  4. Bestätigen Sie, dass Teilausführungen jetzt korrekt funktionieren

Speichernutzung überwachen

Behalten Sie die Systemressourcen nach der Änderung im Auge:

# Monitor memory usage over time
watch -n 5 'free -h && echo "--- Docker Stats ---" && docker stats --no-stream | grep n8n'

Schritt 4: Für Ihren Server optimieren

Empfohlene Nutzlastgrößen nach Server-RAM

Wählen Sie die richtige Nutzlastgröße für Ihre Hardware:

# For servers with 2GB RAM or less
- N8N_PAYLOAD_SIZE_MAX=64   # 64 MiB

# For servers with 4GB RAM  
- N8N_PAYLOAD_SIZE_MAX=128  # 128 MiB

# For servers with 8GB+ RAM
- N8N_PAYLOAD_SIZE_MAX=256  # 256 MiB

# For high-performance servers with 16GB+ RAM
- N8N_PAYLOAD_SIZE_MAX=512  # 512 MiB

Berechnung der Speichernutzung

Schätzen Sie Ihre Speicheranforderungen:

# Calculate safe payload size (should be <20% of available RAM)
echo "Available RAM: $(free -h | awk 'NR==2{print $7}')"
echo "Current payload limit: $(docker exec n8n-n8n-1 env | grep N8N_PAYLOAD_SIZE_MAX || echo '16 (default, MiB)')"

# Monitor actual usage during large workflow executions
docker stats n8n-n8n-1 | grep -E "MEM|n8n"

Häufige Probleme beheben

Problem: Container startet nach Konfigurationsänderung nicht

Symptome:

  • Container beendet sich sofort nach dem Start
  • Status „OOMKilled“ in Docker
  • Server reagiert nicht mehr

Lösung:

# Check container exit reason
docker logs n8n-n8n-1

# Reduce payload size if out of memory
cd /opt/n8n
sed -i 's/N8N_PAYLOAD_SIZE_MAX=256/N8N_PAYLOAD_SIZE_MAX=64/' docker-compose.yml
docker compose up -d

Problem: Fehler wegen der Nutzlastgröße bleiben bestehen

Symptome:

  • Fehler bleibt nach Konfigurationsänderung bestehen
  • Umgebungsvariable scheint nicht zu wirken

Lösung:

# Verify environment variable is set correctly
docker exec n8n-n8n-1 env | grep N8N_PAYLOAD_SIZE_MAX

# If missing, recreate container with force
docker compose down
docker compose up -d --force-recreate

# Check if the value is being read
docker logs n8n-n8n-1 | grep -i payload

Problem: Leistungsverschlechterung des Servers

Symptome:

  • Langsamere Antwortzeiten
  • Hohe Speichernutzung
  • Zunehmende Nutzung der Auslagerungsdatei

Lösung:

# Monitor system performance
vmstat 1 5
iostat -x 1 5

# Check swap usage
swapon --show

# Reduce payload size if needed
# From 256MB to 128MB
sed -i 's/N8N_PAYLOAD_SIZE_MAX=256/N8N_PAYLOAD_SIZE_MAX=128/' docker-compose.yml
docker compose down && docker compose up -d

Erweiterte Konfiguration

Separate Instanzen für unterschiedliche Nutzlastgrößen

Das Limit gilt pro n8n-Instanz, nicht pro Workflow. Fortgeschrittene Nutzer können separate Instanzen mit unterschiedlichen Limits erwägen:

# High-capacity instance for file processing
n8n-files:
  image: n8nio/n8n:latest
  environment:
    - N8N_PAYLOAD_SIZE_MAX=512  # 512 MiB
    - N8N_HOST=files.yourdomain.com

# Standard instance for regular workflows  
n8n-standard:
  image: n8nio/n8n:latest
  environment:
    - N8N_PAYLOAD_SIZE_MAX=64   # 64 MiB
    - N8N_HOST=workflows.yourdomain.com

Ressourcenlimits für Container

Setzen Sie explizite Speicherlimits, um eine Systemüberlastung zu verhindern:

services:
  n8n:
    image: n8nio/n8n:latest
    environment:
      - N8N_PAYLOAD_SIZE_MAX=256
    deploy:
      resources:
        limits:
          memory: 2G      # Maximum memory usage
        reservations:
          memory: 1G      # Soft reservation, not a hard guarantee
    # ... rest of configuration

Nutzlastnutzung überwachen

n8n meldet die Nutzlastgröße nicht direkt. Richten Sie daher stattdessen Warnungen zur Speichernutzung des Containers ein. Dieses Skript setzt voraus, dass docker stats den Speicher in MiB angibt:

#!/bin/bash
# Create monitoring script: /opt/monitor-payload.sh

CONTAINER_NAME="n8n-n8n-1"
MEMORY_LIMIT_MB=1500  # Alert if memory usage exceeds this

CURRENT_MEMORY=$(docker stats --no-stream --format "{{.MemUsage}}" $CONTAINER_NAME | cut -d'/' -f1 | sed 's/MiB//')

if (( $(echo "$CURRENT_MEMORY > $MEMORY_LIMIT_MB" | bc -l) )); then
    echo "WARNING: n8n memory usage high: ${CURRENT_MEMORY}MB" | logger
    # Add notification logic (email, Slack, etc.)
fi

Sicherheitsüberlegungen

Ressourcenbasierter DoS-Schutz

Hohe Nutzlastlimits können ausgenutzt werden. Begrenzen Sie die Anfragegröße am Reverse Proxy, halten Sie dieses Limit (in Bytes) aber mindestens so hoch wie den von N8N_PAYLOAD_SIZE_MAX festgelegten Wert, sonst lehnt der Proxy große Anfragen mit HTTP 413 ab:

# Add to Traefik labels for request size limiting
labels:
  - "traefik.http.middlewares.payload-limit.buffering.maxRequestBodyBytes=268435456"  # 256MB max request, matches N8N_PAYLOAD_SIZE_MAX
  - "traefik.http.routers.n8n.middlewares=payload-limit"

Workflow-spezifische Limits

Erwägen Sie workflowbasierte Einschränkungen:

# Monitor workflows with large payloads
docker exec n8n-n8n-1 n8n execute --help

# Log large executions
(crontab -l 2>/dev/null; echo "*/10 * * * * docker logs n8n-n8n-1 | grep -i 'payload\|memory' >> /var/log/n8n-payload.log") | crontab -

Leistungsoptimierung

Binärdatenverarbeitung

Optimieren Sie bei Workflows zur Dateiverarbeitung die Speicherung von Binärdaten. Beachten Sie, dass N8N_BINARY_DATA_TTL seit n8n 1.9.0 keine Wirkung mehr hat; n8n löscht Binärdaten beim Bereinigen alter Ausführungen:

environment:
  - N8N_PAYLOAD_SIZE_MAX=256
  - N8N_DEFAULT_BINARY_DATA_MODE=filesystem  # Store files on disk, not in memory
  - N8N_BINARY_DATA_TTL=1440                 # Clean up files after 24 hours

Datenbankoptimierung

Große Nutzlasten können die Datenbankleistung beeinträchtigen:

# Monitor database size growth
du -sh /opt/n8n/data/

# Clean up old executions more aggressively
# Add to docker-compose.yml environment:
# - EXECUTIONS_DATA_MAX_AGE=168  # 7 days instead of default 14
# - EXECUTIONS_DATA_PRUNE_MAX_COUNT=1000

Backup und Wiederherstellung

Strategie für Konfigurationsbackups

Erstellen Sie immer ein Backup vor Änderungen:

#!/bin/bash
# Create backup script: /opt/backup-n8n-config.sh

BACKUP_DIR="/opt/backups/n8n-configs"
mkdir -p $BACKUP_DIR

# Backup all n8n docker-compose files
for instance in n8n n8n-team2; do
    if [ -d "/opt/$instance" ]; then
        cp "/opt/$instance/docker-compose.yml" "$BACKUP_DIR/${instance}-$(date +%Y%m%d_%H%M).yml"
    fi
done

# Delete backups older than 10 days
find $BACKUP_DIR -name "*.yml" -mtime +10 -delete

Änderungen schnell zurücksetzen

Wenn Sie Änderungen rückgängig machen müssen:

# List available backups
ls -la /opt/n8n/docker-compose.yml.backup_*

# Restore specific backup
cd /opt/n8n
cp docker-compose.yml.backup_20241206_1430 docker-compose.yml
docker compose down && docker compose up -d

Auswirkungen auf Kosten und Leistung

Analyse der Speicherkosten

Höhere Nutzlastlimits wirken sich auf die Serverkosten aus:

Server RAM Requirements:
- 16MB limit (default): 1GB RAM sufficient
- 64MB limit: 2GB RAM recommended  
- 128MB limit: 4GB RAM recommended
- 256MB limit: 8GB RAM recommended
- 512MB limit: 16GB RAM recommended

Hetzner Cloud Costs (legacy plans, deprecated by Hetzner in June 2024; check current pricing):
- CX11 (2GB RAM): 4,51 EUR/month
- CX21 (4GB RAM): 8,46 EUR/month  
- CX31 (8GB RAM): 16,07 EUR/month

Leistungsvorteile

Höhere Nutzlastlimits ermöglichen:

  • Dateiverarbeitung: Dokumente, Bilder, Videos verarbeiten
  • Datenintegration: Große API-Antworten verarbeiten
  • Verarbeitung großer Datenmengen: Datensätze effizient transformieren
  • Debugging: Komplexe Workflows Node für Node testen

Fazit

Die Erhöhung von N8N_PAYLOAD_SIZE_MAX vom Standardwert 16 MB auf einen für Ihren Server geeigneten Wert ermöglicht leistungsstarke Workflow-Funktionen, die zuvor mit Teilausführungen nicht möglich waren. Das von uns konfigurierte Limit von 256 MB deckt die meisten realen Anwendungsfälle sehr gut ab und erhält zugleich die Stabilität des Servers.

Hauptvorteile dieser Konfiguration

  • Produktivität: Komplexe Workflows Node für Node mit deutlich weniger Größenbeschränkungen auf Fehler untersuchen
  • Leistungsfähigkeit: Dateien und große Datensätze effizient verarbeiten
  • Kosteneffizient: Ein Limit von 128 MB auf einem Server mit 4 GB RAM für unter 10 EUR/Monat nutzen (oben genannter Preis des früheren Hetzner-Tarifs CX21)
  • Zuverlässig: Im Produktivbetrieb erprobte Konfiguration mit angemessenem Ressourcenmanagement
  • Skalierbar: Limits einfach anpassen, wenn Ihre Workflows komplexer werden

Diese Konfiguration baut auf unserem ursprünglichen n8n-Einrichtungsleitfaden und unserem Leitfaden zur Webhook-Fehlerbehebung auf, um eine vollständige, für den Produktivbetrieb geeignete Automatisierungsplattform zu schaffen, die Datenverarbeitungs-Workflows auf Unternehmensniveau bewältigen kann.

Bei hohen Datenvolumen oder besonderen Anforderungen an Nutzlasten empfiehlt es sich, Automatisierungsexperten hinzuzuziehen, um Ihren konkreten Anwendungsfall zu optimieren und die Serverressourcen bestmöglich zuzuteilen.

Über tva

tva gewährleistet umfassendes Infrastrukturmanagement von Datenbanksystemen, Cloud-Umgebungen und globalen Lieferketten. Unser methodischer Ansatz verbindet strenge Sicherheitsprotokolle mit Leistungsoptimierung, während strategische Beratung eine präzise Koordination digitaler Kompetenzen und physischer Ressourcen ermöglicht – unter Einhaltung höchster Standards für Betriebsführung und Compliance in jeder Zusammenarbeit.

Besuchen Sie tva.sg für weitere Informationen über unsere Leistungen sowie weitere Anleitungen zur Automatisierung.

Weiterführende Beiträge