Résoudre l’erreur n8n « Existing execution data is too large » : le correctif complet pour les instances auto-hébergées
L’auto-hébergement de n8n vous offre des exécutions de flux de travail illimitées et un contrôle total, mais les flux de travail complexes avec des ensembles de données volumineux peuvent déclencher des erreurs frustrantes que vous devez corriger dans la configuration de votre propre serveur. Si vous voyez « Please execute the whole workflow, rather than just the node. (Existing execution data is too large.) » lorsque vous essayez de tester des nœuds individuels, vous avez atteint la limite de taille de charge utile. Nous vous montrons comment identifier, corriger et optimiser cette limitation pour des installations n8n prêtes pour la production.
Le problème : quand le test des flux de travail ne fonctionne plus
Vous avez réussi à configurer votre instance n8n et mis en place une gestion fiable des webhooks, mais maintenant vous construisez des flux de travail plus sophistiqués qui traitent des fichiers, de grandes réponses API ou des ensembles de données. Tout fonctionne bien lors de l’exécution du flux de travail complet, mais dès que vous essayez de tester un seul nœud ou d’effectuer des exécutions partielles, n8n affiche le message d’erreur redouté.
Cela se produit parce que n8n a une limite par défaut de 16 Mo pour les données d’exécution partielle, qui fonctionne bien pour les flux de travail simples mais devient un goulot d’étranglement dès que vous commencez à traiter des volumes de données réels.
Ce que vous allez corriger
À la fin de ce guide, vous aurez :
- Une limite de taille de charge utile portée de 16 Mo à 256 Mo ou à une valeur personnalisée
- Des exécutions partielles fonctionnelles pour les flux de travail complexes avec des ensembles de données volumineux
- Une allocation de ressources adéquate en tenant compte des limites de RAM de votre serveur
- Un système de supervision pour suivre l’utilisation de la mémoire au fil du temps
- Une configuration prête pour la production capable de gérer les flux de travail de traitement de fichiers
- Des procédures de sauvegarde et de restauration pour les modifications de configuration
Prérequis
- Installation n8n fonctionnelle (de préférence réalisée à partir de notre guide de configuration Hetzner)
- n8n fonctionnant dans des conteneurs Docker
- Accès SSH à votre serveur
- Compréhension de base des variables d’environnement Docker Compose
- Au moins 3 Go de RAM disponibles (recommandé pour une limite de taille de charge utile de 256 Mo)
Comprendre la cause du problème
Pourquoi n8n auto-hébergé a des limites de taille de charge utile
Lorsque vous effectuez des exécutions partielles (test de nœuds individuels), n8n doit sérialiser et transmettre l’état du flux de travail et les données au backend. Cela inclut :
- Toutes les données d’entrée des nœuds précédents
- La logique du flux de travail et les configurations des nœuds
- Le contexte d’exécution et les variables
- Les données binaires et le contenu des fichiers
La valeur par défaut N8N_PAYLOAD_SIZE_MAX=16 (16 MiB ; la valeur est exprimée en MiB) a été conçue pour les réponses API typiques et le traitement de données simples. Cependant, les flux de travail modernes traitent souvent :
Scénarios courants qui dépassent 16 Mo :
- Téléversement et traitement de fichiers (PDF, images, tableurs)
- Grandes réponses API provenant de sources de données
- Transformations de données en masse
- Flux de travail en plusieurs étapes avec accumulation de données
Ce qui se passe après le correctif :
- Les exécutions partielles fonctionnent avec des ensembles de données volumineux
- Les flux de travail de traitement de fichiers deviennent testables
- Les transformations de données complexes peuvent être déboguées nœud par nœud
La configuration manquante
La solution est la variable d’environnement N8N_PAYLOAD_SIZE_MAX, qui définit la taille maximale de la charge utile des requêtes en MiB, y compris les données envoyées par l’éditeur pour les exécutions partielles. Lorsqu’une requête dépasse cette limite, n8n répond avec HTTP 413 et l’éditeur affiche cette erreur. Sur n8n Cloud, n8n gère ce paramètre pour vous ; les instances auto-hébergées utilisent la valeur prudente par défaut de 16 MiB.
Étape 1 : diagnostiquer votre configuration actuelle
Vérifier les ressources de votre serveur
Avant d’augmenter les limites de taille de charge utile, vérifiez que votre serveur peut gérer des allocations mémoire plus importantes :
# Check available memory
free -h
# Check current Docker container memory usage
docker stats --no-stream | grep n8n
# Check total system resources
htop
Exigences mémoire :
- Limite de taille de charge utile de 64 Mo : minimum 1 Go de RAM disponible
- Limite de taille de charge utile de 128 Mo : minimum 2 Go de RAM disponible
- Limite de taille de charge utile de 256 Mo : minimum 3 Go de RAM disponible
Identifier la limite actuelle
Vérifiez si N8N_PAYLOAD_SIZE_MAX est configuré :
# 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"
Tester la condition d’erreur
Créez un flux de travail de test pour reproduire le problème :
- Ouvrez votre interface n8n
- Créez un flux de travail avec un ensemble de données volumineux (par ex., une requête HTTP vers une API qui renvoie >16 Mo)
- Essayez d’exécuter un seul nœud en aval
- Vérifiez que vous voyez l’erreur « Existing execution data is too large »
Étape 2 : corriger le problème principal – augmenter la taille de la charge utile
Pour une seule instance n8n
Si vous avez une seule installation n8n :
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
Ajoutez la variable d’environnement N8N_PAYLOAD_SIZE_MAX à votre configuration existante :
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
Pour plusieurs instances n8n
Si vous exécutez plusieurs instances n8n, mettez à jour chacune :
# 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
Redémarrer vos conteneurs
Appliquez les changements :
# 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
Étape 3 : vérifier le correctif
Vérifier les journaux des conteneurs
Vérifiez que les conteneurs ont démarré avec succès :
# 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"
Tester l’augmentation de la taille de charge utile
Retournez à votre flux de travail de test qui échouait :
- Ouvrez le flux de travail avec l’ensemble de données volumineux
- Essayez d’exécuter un seul nœud en aval
- Vérifiez que l’erreur « Existing execution data is too large » a disparu
- Confirmez que les exécutions partielles fonctionnent correctement
Surveiller l’utilisation de la mémoire
Gardez un œil sur les ressources système après la modification :
# Monitor memory usage over time
watch -n 5 'free -h && echo "--- Docker Stats ---" && docker stats --no-stream | grep n8n'
Étape 4 : optimiser pour votre serveur
Tailles de charge utile recommandées selon la RAM du serveur
Choisissez la bonne taille de charge utile pour votre matériel :
# 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
Calcul de l’utilisation mémoire
Estimez vos besoins en mémoire :
# 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"
Résolution des problèmes courants
Problème : le conteneur ne démarre pas après la modification de configuration
Symptômes :
- Le conteneur se ferme immédiatement après le démarrage
- Statut « OOMKilled » dans Docker
- Le serveur ne répond plus
Solution :
# 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
Problème : les erreurs de taille de charge utile persistent
Symptômes :
- L’erreur persiste après la modification de la configuration
- La variable d’environnement ne semble pas prendre effet
Solution :
# 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
Problème : dégradation des performances du serveur
Symptômes :
- Temps de réponse plus lents
- Utilisation mémoire élevée
- Augmentation de l’utilisation du fichier d’échange (swap)
Solution :
# 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
Configuration avancée
Des instances distinctes pour différentes tailles de charge utile
La limite s’applique par instance n8n, et non par flux de travail. Pour les utilisateurs avancés, envisagez des instances distinctes avec des limites différentes :
# 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
Limites de ressources des conteneurs
Définissez des limites mémoire explicites pour éviter la surcharge du système :
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
Surveillance de l’utilisation des charges utiles
n8n ne fournit pas directement la taille des charges utiles ; configurez donc plutôt des alertes sur l’utilisation de la mémoire du conteneur. Ce script suppose que docker stats indique la mémoire en MiB :
#!/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
Considérations de sécurité
Protection contre les attaques DoS basées sur les ressources
De grandes limites de taille de charge utile peuvent être exploitées. Limitez la taille des requêtes au niveau du proxy inverse, mais maintenez cette limite (en octets) à une valeur au moins égale à la taille définie par N8N_PAYLOAD_SIZE_MAX, sinon le proxy rejettera les requêtes volumineuses avec HTTP 413 :
# 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"
Limites spécifiques aux flux de travail
Envisagez des restrictions basées sur les flux de travail :
# 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 -
Optimisation des performances
Gestion des données binaires
Pour les flux de travail de traitement de fichiers, optimisez le stockage des données binaires. Notez que N8N_BINARY_DATA_TTL est sans effet depuis n8n 1.9.0 ; n8n supprime les données binaires lors de la purge des exécutions :
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
Optimisation de la base de données
Les grandes charges utiles peuvent affecter les performances de la base de données :
# 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
Sauvegarde et récupération
Stratégie de sauvegarde de la configuration
Sauvegardez toujours avant de faire des modifications :
#!/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
Procédure de restauration rapide
Si vous devez annuler les modifications :
# 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
Impact sur les coûts et les performances
Analyse du coût lié à la mémoire
L’augmentation des limites de taille de charge utile affecte les coûts du serveur :
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/month
- CX21 (4GB RAM): €8.46/month
- CX31 (8GB RAM): €16.07/month
Avantages en termes de performances
Des limites de taille de charge utile plus élevées permettent :
- Traitement de fichiers : gérer des documents, images, vidéos
- Intégration de données : traiter de grandes réponses API
- Opérations en masse : transformer efficacement des ensembles de données
- Débogage : tester des flux de travail complexes nœud par nœud
Conclusion
L’augmentation de N8N_PAYLOAD_SIZE_MAX de la valeur par défaut de 16 Mo à une valeur adaptée à votre serveur permet, lors des exécutions partielles, des traitements qui étaient auparavant impossibles. La limite de 256 Mo que nous avons configurée répond très bien aux besoins de la plupart des scénarios réels tout en maintenant la stabilité du serveur.
Principaux avantages de cette configuration
- Productivité : déboguez des flux de travail complexes nœud par nœud avec beaucoup moins de restrictions de taille
- Capacité : traitez des fichiers et des ensembles de données volumineux efficacement
- Économique : utilisez une limite de 128 Mo sur un serveur doté de 4 Go de RAM pour moins de 10 €/mois (ancien tarif Hetzner CX21 indiqué ci-dessus)
- Fiable : configuration testée en production avec gestion adéquate des ressources
- Évolutif : ajustez facilement les limites à mesure que vos flux de travail gagnent en complexité
Cette configuration s’appuie sur notre guide de configuration n8n original et notre guide de dépannage des webhooks pour créer une plateforme d’automatisation complète, prête pour la production, capable de gérer des flux de travail de traitement de données de niveau entreprise.
Pour des exigences de charge utile à haut volume ou spécialisées, envisagez de consulter des experts en automatisation pour optimiser votre cas d’utilisation spécifique et garantir une allocation optimale des ressources du serveur.
À propos de tva
tva assure la gestion complète de l’infrastructure des systèmes de bases de données, des environnements cloud et des chaînes d’approvisionnement mondiales. Notre approche méthodique combine des protocoles de sécurité rigoureux avec l’optimisation des performances, tandis que nos services de conseil stratégique permettent une coordination précise des capacités numériques et des actifs physiques – maintenant les plus hauts standards d’excellence opérationnelle et de conformité dans toutes nos missions.
Visitez tva.sg pour plus d’informations sur nos services et nos tutoriels d’automatisation supplémentaires.
Pour aller plus loin
Guide complet de dépannage de n8n auto-hébergé 2025 : résoudre les problèmes de taille des données d’exécution et de webhooks avec Traefik
n8n 2.x auto-hébergé : diagnostiquer les limites des données d’exécution et augmenter la charge utile en toute sécurité
Résoudre les problèmes de webhooks n8n : le guide complet de dépannage pour les instances auto-hébergées