وضع Redis الخارجي "Queue" - "هل هي حالة خلل في n8n محتملة؟"

وضع قائمة انتظار n8n: انقطاع اتصال PostgreSQL بعد الانتقال من Redis في المجموعة إلى Aiven Valkey الخارجي

وصف المشكلة/الخطأ/السؤال

ملخص
بعد ترحيل Redis من نشر في المجموعة إلى Aiven Valkey الخارجي، بدأت n8n تفشل في التنفيذات مع انقطاع اتصال PostgreSQL.
قبل ترحيل Redis، كان النشر نفسه يعمل بشكل صحيح. (المهمة لم يتم التقاطها من قبل العمل)

البيئة

  • n8n منتشرة عبر مخطط Helm
  • مجموعة Kubernetes
  • وضع قائمة الانتظار مفعّل
  • PostgreSQL قيد التشغيل في المجموعة
  • Redis مرحّل من Redis في المجموعة إلى Aiven Valkey الخارجي

anton% kubectl get pods -n n8n
NAME READY STATUS RESTARTS AGE
n8n-77889b4756-9wqtq 1/1 Running 0 9m6s
n8n-postgresql-0 1/1 Running 0 112m
n8n-redis-master-0 1/1 Running 0 9m6s
n8n-webhook-7ffccd5dd8-njpnm 1/1 Running 1 (8m48s ago) 9m6s
n8n-worker-f7fff89fb-k45ff 1/1 Running 0 8m20s
n8n-worker-f7fff89fb-nv994 1/1 Running 1 (8m42s ago) 9m6s

ما رسالة الخطأ (إن وجدت)؟

يرجى مشاركة سير العمل الخاص بك

Lost Redis connection. Trying to reconnect in 1s...

Recovered Redis connection
Execution XX (job YY) failed

Error: timeout exceeded when trying to connect

خطاف ويب بسيط

Error: timeout exceeded when trying to connect
    at pg-pool/index.js:45
    at PostgresDriver.obtainMasterConnection
    at PostgresQueryRunner.query
    at ExecutionRepository.findSingleExecution
    at JobProcessor.processJob

ما الذي تغيّر

كان التغيير الوحيد في البنية التحتية هو ترحيل Redis من نسخة Redis في المجموعة إلى Aiven Valkey الخارجي.

قبل الترحيل:

  • وضع قائمة الانتظار كان يعمل بشكل صحيح
  • اكتملت التنفيذات بنجاح
  • لا توجد أخطاء انقطاع اتصال PostgreSQL

بعد الترحيل:

  • بدأت رسائل إعادة الاتصال بـ Redis تظهر

  • يفشل العمال في التنفيذات

  • تظهر أخطاء انقطاع اتصال PostgreSQL

    ملاحظات إضافية

    الاتصال من عمال Pod إلى Aiven Valkey يبدو صحياً:

    23 packets transmitted
    
    23 received
    
    0% packet loss
    
    avg latency ~16ms
    

استخدام Redis الخارجي

استخدام Redis في المجموعة

معلومات عن إعداد n8n الخاص بك

  • إصدار n8n: 2.25.7
  • قاعدة البيانات (افتراضي: postgresql**)**
  • إعداد EXECUTIONS_PROCESS في n8n (افتراضي: own, main):
  • تشغيل n8n عبر (kuber):
  • نظام التشغيل: Debian12
    حاولت على أحدث إصدار v1 المشكلة هي نفسها

مرحبا @Antonio1

Aiven Valkey يتطلب تكوينات محددة تختلف عن نشر Redis القياسي داخل المجموعة.

  • متطلب TLS/SSL: خدمات Aiven تتطلب TLS. تأكد من أن متغيرات بيئة n8n تتضمن:
    • N8N_REDIS_TLS=true (أو الإعداد المكافئ حسب إصدار n8n الخاص بك أو الصورة المخصصة).
    • إذا كنت تستخدم سلسلة اتصال مخصصة، تأكد من أنها تستخدم rediss:// (بحرفي s) بدلاً من redis://.
  • TCP Keepalives: الاتصالات الخارجية أكثر عرضة لأن يتم إسقاطها بواسطة جدران الحماية السحابية أو موازنات التحميل. تأكد من أن عقد Kubernetes الخاصة بك لديها إعدادات TCP keepalive مناسبة، أو تحقق مما إذا كانت Aiven توفر فترة keepalive موصى بها.
  • سياسات الشبكة: تحقق من أن سياسات Kubernetes Egress الخاصة بك تسمح بحركة المرور على منفذ Valkey (عادة 6379 أو منفذ Aiven مخصص) إلى نطاق IP الخارجي لـ Aiven.

أخبرني إذا كانت هذه مفيدة

شكراً على الرد

نعم، أنا أعرف أنني حاولت

QUEUE_BULL_REDIS_CONNECTION_TIMEOUT: 30000
QUEUE_BULL_REDIS_TIMEOUT: 30000
QUEUE_BULL_REDIS_KEEP_ALIVE_DELAY: 15000

ونعم أنا أستخدم TLS مع Aiven

tls:
    enabled: true
host: valkey-XXXXXXX.l.aivencloud.com
port: 21275

username: default
password: "PASS_HERE"

سجل من n8N

Execution 29 (job 99) failed

Error: تم تجاوز المهلة الزمنية عند محاولة الاتصال

    at /usr/local/lib/node_modules/n8n/node_modules/.pnpm/pg-pool@3.6.2_pg@8.12.0/node_modules/pg-pool/index.js:45:11

    at PostgresDriver.obtainMasterConnection (/usr/local/lib/node_modules/n8n/node_modules/.pnpm/@n8n+typeorm@0.3.20-15_@sentry+node@9.42.1_mysql2@3.15.0_pg@8.12.0_sqlite3@5.1.7/node_modules/src/driver/postgres/PostgresDriver.ts:1181:28)

    at PostgresQueryRunner.query (/usr/local/lib/node_modules/n8n/node_modules/.pnpm/@n8n+typeorm@0.3.20-15_@sentry+node@9.42.1_mysql2@3.15.0_pg@8.12.0_sqlite3@5.1.7/node_modules/src/driver/postgres/PostgresQueryRunner.ts:248:36)

    at SelectQueryBuilder.loadRawResults (/usr/local/lib/node_modules/n8n/node_modules/.pnpm/@n8n+typeorm@0.3.20-15_@sentry+node@9.42.1_mysql2@3.15.0_pg@8.12.0_sqlite3@5.1.7/node_modules/src/query-builder/SelectQueryBuilder.ts:3660:25)

    at SelectQueryBuilder.getRawMany (/usr/local/lib/node_modules/n8n/node_modules/.pnpm/@n8n+typeorm@0.3.20-15_@sentry+node@9.42.1_mysql2@3.15.0_pg@8.12.0_sqlite3@5.1.7/node_modules/src/query-builder/SelectQueryBuilder.ts:1617:29)

    at SelectQueryBuilder.executeEntitiesAndRawResults (/usr/local/lib/node_modules/n8n/node_modules/.pnpm/@n8n+typeorm@0.3.20-15_@sentry+node@9.42.1_mysql2@3.15.0_pg@8.12.0_sqlite3@5.1.7/node_modules/src/query-builder/SelectQueryBuilder.ts:3322:26)

    at SelectQueryBuilder.getRawAndEntities (/usr/local/lib/node_modules/n8n/node_modules/.pnpm/@n8n+typeorm@0.3.20-15_@sentry+node@9.42.1_mysql2@3.15.0_pg@8.12.0_sqlite3@5.1.7/node_modules/src/query-builder/SelectQueryBuilder.ts:1661:29)

    at SelectQueryBuilder.getOne (/usr/local/lib/node_modules/n8n/node_modules/.pnpm/@n8n+typeorm@0.3.20-15_@sentry+node@9.42.1_mysql2@3.15.0_pg@8.12.0_sqlite3@5.1.7/node_modules/src/query-builder/SelectQueryBuilder.ts:1688:25)

    at ExecutionRepository.findSingleExecution (/usr/local/lib/node_modules/n8n/node_modules/.pnpm/@n8n+db@file+packages+@n8n+db_@opentelemetry+api@1.9.0_@opentelemetry+sdk-trace-base@1._ab22bba05a964211b9fe14bf4b841570/node_modules/@n8n/db/src/repositories/execution.repository.ts:315:21)

    at JobProcessor.processJob (/usr/local/lib/node_modules/n8n/src/scaling/job-processor.ts:57:21)

مشكلة في التنفيذ 29: خطأ: تم تجاوز المهلة الزمنية عند محاولة الاتصال. جاري الإحباط.

Error: timeout exceeded when trying to connect (execution 29)

Error: Error: timeout exceeded when trying to connect

    at Queue.onFailed (/usr/local/lib/node_modules/n8n/node_modules/.pnpm/bull@4.16.4_patch_hash=a4b6d56db16fe5870646929938466d6a5c668435fd1551bed6a93fffb597ba42/node_modules/bull/lib/job.js:523:18)

    at processTicksAndRejections (node:internal/process/task_queues:104:5)

Execution 30 (job 100) failed

Error: تم تجاوز المهلة الزمنية عند محاولة الاتصال

    at /usr/local/lib/node_modules/n8n/node_modules/.pnpm/pg-pool@3.11.0_pg@8.17.0/node_modules/pg-pool/index.js:45:11

    at PostgresDriver.obtainMasterConnection (/usr/local/lib/node_modules/n8n/node_modules/.pnpm/@n8n+typeorm@0.3.20-16_@sentry+node@10.36.0_mysql2@3.17.0_pg@8.17.0_sqlite3@5.1.7/node_modules/src/driver/postgres/PostgresDriver.ts:1182:28)

    at PostgresQueryRunner.query (/usr/local/lib/node_modules/n8n/node_modules/.pnpm/@n8n+typeorm@0.3.20-16_@sentry+node@10.36.0_mysql2@3.17.0_pg@8.17.0_sqlite3@5.1.7/node_modules/src/driver/postgres/PostgresQueryRunner.ts:248:36)

    at SelectQueryBuilder.loadRawResults (/usr/local/lib/node_modules/n8n/node_modules/.pnpm/@n8n+typeorm@0.3.20-16_@sentry+node@10.36.0_mysql2@3.17.0_pg@8.17.0_sqlite3@5.1.7/node_modules/src/query-builder/SelectQueryBuilder.ts:3660:25)

    at SelectQueryBuilder.getRawMany (/usr/local/lib/node_modules/n8n/node_modules/.pnpm/@n8n+typeorm@0.3.20-16_@sentry+node@10.36.0_mysql2@3.17.0_pg@8.17.0_sqlite3@5.1.7/node_modules/src/query-builder/SelectQueryBuilder.ts:1617:29)

    at SelectQueryBuilder.executeEntitiesAndRawResults (/usr/local/lib/node_modules/n8n/node_modules/.pnpm/@n8n+typeorm@0.3.20-16_@sentry+node@10.36.0_mysql2@3.17.0_pg@8.17.0_sqlite3@5.1.7/node_modules/src/query-builder/SelectQueryBuilder.ts:3322:26)

    at SelectQueryBuilder.getRawAndEntities (/usr/local/lib/node_modules/n8n/node_modules/.pnpm/@n8n+typeorm@0.3.20-16_@sentry+node@10.36.0_mysql2@3.17.0_pg@8.17.0_sqlite3@5.1.7/node_modules/src/query-builder/SelectQueryBuilder.ts:1661:29)

    at SelectQueryBuilder.getOne (/usr/local/lib/node_modules/n8n/node_modules/.pnpm/@n8n+typeorm@0.3.20-16_@sentry+node@10.36.0_mysql2@3.17.0_pg@8.17.0_sqlite3@5.1.7/node_modules/src/query-builder/SelectQueryBuilder.ts:1688:25)

هل يمكن أن يكون هذا؟

المهمة تتوقف في Redis ↓
يرى n8n الرئيسي التنفيذ بحالة "قيد التشغيل" ↓
يحاول قراءته من PostgreSQL لعرض الحالة ↓
انقطاع pg-pool — لأن العديد من طلبات "التعليق" هذه تتراكم في نفس الوقت

نعم، هذا الشكل ممكن، لكن التتبع الذي لصقته هو pg-pool، لذا البوابة التالية هي سعة Postgres تحت تزامن العامل (worker concurrency)، وليس مقبض Redis timeout آخر. يمكن لبعض المهام المتعطلة أن تبقي عمليات القراءة مفتوحة لفترة كافية بحيث أن main/webhook/workers جميعها تصطدم بنفس حد قاعدة البيانات.

فحص صغير واحد: كم عدد العمال المشغلين، ما هو DB_POSTGRESDB_POOL_SIZE، وما هو max_connections في Postgres بعد الفتحات المحجوزة؟ إذا كانت رياضيات البركة ضيقة بالفعل، فإن Valkey أظهر للتو اختناق قاعدة البيانات.

@Antonio1

تحتاج إلى توفير مساحة تنفسية أكبر لاتصالات قاعدة البيانات حتى تتمكن فحوصات الحالة من النجاح حتى لو كان العمال يتصرفون بشكل سيء.

  • عيّن متغير البيئة التالي في نشر n8n الخاص بك: DB_POSTGRESDB_POOL_SIZE: "50" (أو أعلى، حسب إجمالي عدد العمال).
  • حاسم: تأكد من أن max_connections في PostgreSQL (في postgresql.conf أو إعدادات موفر السحابة) مضبوط على الأقل (number_of_pods * DB_POSTGRESDB_POOL_SIZE) + 20.

نظراً لأنك تستخدم Aiven، فمن المرجح أن يكون مصافحة TLS هي الاختناق أثناء أحداث إعادة الاتصال.

  • زيادة انتظار اتصال Redis: لقد عيّنت QUEUE_BULL_REDIS_CONNECTION_TIMEOUT على 30 ثانية. حاول زيادتها إلى 60000 (60 ثانية) للسماح بمصافحات TLS الأبطأ عبر الإنترنت العام.
  • تعطيل وضع مجموعة Redis (إن أمكن): إذا لم تكن تستخدم صراحة مجموعة Valkey/Redis، تأكد من تكوين n8n للاتصال بعقدة واحدة.
  • تحقق من مقاييس Aiven: سجل الدخول إلى وحدة تحكم Aiven الخاصة بك وتحقق من “عدد الاتصالات” و**“استخدام المعالج”** لخدمة Valkey. إذا رأيت قفزات في الوقت الذي يفشل فيه عمال n8n، فقد تكون وصلت إلى حد الاتصال على جانب Aiven.

حسناً، اختبرت للتو مرة أخرى مع POST واحد فقط

وفي علامة التبويب “Execution” يظهر هذا POST كـ Queue ثم Failed
لا توجد Workflows أخرى على هذا n8n، أنا فقط أحاول استخدام وضع Queen هنا
هذا العمل لا يظهر على أي worker
إنه يفشل فقط على Main N8n pod

Lost Redis connection. Trying to reconnect in 1s... (0s/10s)

Recovered Redis connection

Enqueued execution 122 (job 166)

Execution 122 (job 166) failed

Error: timeout exceeded when trying to connect

    at /usr/local/lib/node_modules/n8n/node_modules/.pnpm/pg-pool@3.6.2_pg@8.12.0/node_modules/pg-pool/index.js:45:11

    at PostgresDriver.obtainMasterConnection (/usr/local/lib/node_modules/n8n/node_modules/.pnpm/@n8n+typeorm@0.3.20-15_@sentry+node@9.42.1_mysql2@3.15.0_pg@8.12.0_sqlite3@5.1.7/node_modules/src/driver/postgres/PostgresDriver.ts:1181:28)

    at PostgresQueryRunner.query (/usr/local/lib/node_modules/n8n/node_modules/.pnpm/@n8n+typeorm@0.3.20-15_@sentry+node@9.42.1_mysql2@3.15.0_pg@8.12.0_sqlite3@5.1.7/node_modules/src/driver/postgres/PostgresQueryRunner.ts:248:36)

    at SelectQueryBuilder.loadRawResults (/usr/local/lib/node_modules/n8n/node_modules/.pnpm/@n8n+typeorm@0.3.20-15_@sentry+node@9.42.1_mysql2@3.15.0_pg@8.12.0_sqlite3@5.1.7/node_modules/src/query-builder/SelectQueryBuilder.ts:3660:25)

    at SelectQueryBuilder.getRawMany (/usr/local/lib/node_modules/n8n/node_modules/.pnpm/@n8n+typeorm@0.3.20-15_@sentry+node@9.42.1_mysql2@3.15.0_pg@8.12.0_sqlite3@5.1.7/node_modules/src/query-builder/SelectQueryBuilder.ts:1617:29)

    at SelectQueryBuilder.executeEntitiesAndRawResults (/usr/local/lib/node_modules/n8n/node_modules/.pnpm/@n8n+typeorm@0.3.20-15_@sentry+node@9.42.1_mysql2@3.15.0_pg@8.12.0_sqlite3@5.1.7/node_modules/src/query-builder/SelectQueryBuilder.ts:3322:26)

    at SelectQueryBuilder.getRawAndEntities (/usr/local/lib/node_modules/n8n/node_modules/.pnpm/@n8n+typeorm@0.3.20-15_@sentry+node@9.42.1_mysql2@3.15.0_pg@8.12.0_sqlite3@5.1.7/node_modules/src/query-builder/SelectQueryBuilder.ts:1661:29)

    at SelectQueryBuilder.getOne (/usr/local/lib/node_modules/n8n/node_modules/.pnpm/@n8n+typeorm@0.3.20-15_@sentry+node@9.42.1_mysql2@3.15.0_pg@8.12.0_sqlite3@5.1.7/node_modules/src/query-builder/SelectQueryBuilder.ts:1688:25)

    at ExecutionRepository.findSingleExecution (/usr/local/lib/node_modules/n8n/node_modules/.pnpm/@n8n+db@file+packages+@n8n+db_@opentelemetry+api@1.9.0_@opentelemetry+sdk-trace-base@1._ab22bba05a964211b9fe14bf4b841570/node_modules/@n8n/db/src/repositories/execution.repository.ts:315:21)

    at JobProcessor.processJob (/usr/local/lib/node_modules/n8n/src/scaling/job-processor.ts:57:21)

Problem with execution 122: Error: timeout exceeded when trying to connect. Aborting.

Error: timeout exceeded when trying to connect (execution 122)

Error: Error: timeout exceeded when trying to connect

    at Queue.onFailed (/usr/local/lib/node_modules/n8n/node_modules/.pnpm/bull@4.16.4_patch_hash=a4b6d56db16fe5870646929938466d6a5c668435fd1551bed6a93fffb597ba42/node_modules/bull/lib/job.js:523:18)

    at processTicksAndRejections (node:internal/process/task_queues:104:5)

Lost Redis connection. Trying to reconnect in 1s... (0s/10s)

Recovered Redis connection

هذا يغير القراءة. إذا لم يتم تنفيذ اختبار واحد على أي عامل (worker)، فهذه ليست مشكلة حجم مجموعة Postgres بعد. يتم وضع المهمة في الطابور، ثم لا يبقى جانب العامل متصلاً بنفس طابور Redis/Valkey لفترة كافية للمطالبة به.

أرسل سطر سجل بدء تشغيل عامل واحد حيث يتصل في وضع الطابور، بالإضافة إلى EXECUTIONS_MODE و QUEUE_BULL_REDIS_HOST/PORT/TLS و QUEUE_BULL_PREFIX مع إزالة الأسرار. أول شيء يجب تأكيده هو أن الرئيسي والعامل يشيران إلى نفس إعدادات الطابور بالضبط، وليس فقط نفس مضيف Valkey.

@Antonio1 :white_check_mark: إدارة مؤشرات الحالة ومشاكل الذاكرة في سير العمل في n8n تتطلب معمارية نظيفة وموديولارية، خاصة عند مزامنة البيانات المعقدة عبر Google Docs و Sheets.

:white_check_mark: إذا كنت تبحث عن تبسيط هذا المنطق أو تحتاج إلى حل قوي وجاهز للإنتاج لتثبيت وكلائك الذكيين، فلننا نتواصل.

:white_check_mark: أنا متخصص في بناء وتحسين الأداء العالية لأنظمة أتمتة n8n و AI و Make.com و GHL

EXECUTIONS_MODE

{26-06-12 12:52}Antons-MacBook-Pro-2:~ anton% for pod in $(kubectl get pods -n n8n -o name); do
echo "=== $pod ==="
kubectl exec -n n8n ${pod#pod/} -- env | grep EXECUTIONS_MODE
done
=== pod/n8n-564fbc565f-lxnsc ===
تم تعيين الحاوية الافتراضية "n8n-main" من بين: n8n-main, npm-install (init)
EXECUTIONS_MODE=queue
=== pod/n8n-postgresql-0 ===
=== pod/n8n-webhook-6bfc9f5cd8-dcv7l ===
EXECUTIONS_MODE=queue
=== pod/n8n-worker-7fb4c7d87d-jzwth ===
تم تعيين الحاوية الافتراضية "n8n-worker" من بين: n8n-worker, npm-install (init)
EXECUTIONS_MODE=queue
=== pod/n8n-worker-7fb4c7d87d-k82xw ===
تم تعيين الحاوية الافتراضية "n8n-worker" من بين: n8n-worker, npm-install (init)
EXECUTIONS_MODE=queue
=== pod/n8n-worker-7fb4c7d87d-kkdm9 ===
تم تعيين الحاوية الافتراضية "n8n-worker" من بين: n8n-worker, npm-install (init)
EXECUTIONS_MODE=queue
=== pod/n8n-worker-7fb4c7d87d-lqt7j ===
تم تعيين الحاوية الافتراضية "n8n-worker" من بين: n8n-worker, npm-install (init)
EXECUTIONS_MODE=queue
=== pod/n8n-worker-7fb4c7d87d-mspxz ===
تم تعيين الحاوية الافتراضية "n8n-worker" من بين: n8n-worker, npm-install (init)
EXECUTIONS_MODE=queue
=== pod/n8n-worker-7fb4c7d87d-xqcr2 ===
تم تعيين الحاوية الافتراضية "n8n-worker" من بين: n8n-worker, npm-install (init)
EXECUTIONS_MODE=queue



و

{26-06-12 12:52}Antons-MacBook-Pro-2:~ anton% for pod in $(kubectl get pods -n n8n -o name); do

  echo "=== $pod ==="

  kubectl exec -n n8n ${pod#pod/} -- env | grep QUEUE_BULL_

done

=== pod/n8n-564fbc565f-lxnsc ===

تم تعيين الحاوية الافتراضية "n8n-main" من بين: n8n-main, npm-install (init)

QUEUE_BULL_SETTINGS_LOCK_RENEW_TIME=30000

QUEUE_BULL_REDIS_DUALSTACK=false

QUEUE_BULL_REDIS_TIMEOUT=30000

QUEUE_BULL_REDIS_USERNAME=default

QUEUE_BULL_REDIS_PASSWORD=PASSWORD_SECURE

QUEUE_BULL_REDIS_CONNECTION_TIMEOUT=30000

QUEUE_BULL_SETTINGS_LOCK_DURATION=60000

QUEUE_BULL_REDIS_PORT=21275

QUEUE_BULL_SETTINGS_STALLED_INTERVAL=60000

QUEUE_BULL_REDIS_HOST=valkey-757370-XXXX.l.aivencloud.com

QUEUE_BULL_REDIS_KEEP_ALIVE_DELAY=15000

QUEUE_BULL_REDIS_DB=0

QUEUE_BULL_REDIS_TLS=true

=== pod/n8n-postgresql-0 ===

=== pod/n8n-webhook-6bfc9f5cd8-dcv7l ===

QUEUE_BULL_REDIS_PASSWORD=PASSWORD_SECURE

QUEUE_BULL_REDIS_KEEP_ALIVE_DELAY=15000

QUEUE_BULL_REDIS_CONNECTION_TIMEOUT=30000

QUEUE_BULL_REDIS_PORT=21275

QUEUE_BULL_REDIS_DB=0

QUEUE_BULL_SETTINGS_LOCK_DURATION=60000

QUEUE_BULL_SETTINGS_STALLED_INTERVAL=60000

QUEUE_BULL_REDIS_TLS=true

QUEUE_BULL_REDIS_DUALSTACK=false

QUEUE_BULL_SETTINGS_LOCK_RENEW_TIME=30000

QUEUE_BULL_REDIS_USERNAME=default

QUEUE_BULL_REDIS_TIMEOUT=30000

QUEUE_BULL_REDIS_HOST=valkey-757370-XXXX.l.aivencloud.com

=== pod/n8n-worker-7fb4c7d87d-jzwth ===

تم تعيين الحاوية الافتراضية "n8n-worker" من بين: n8n-worker, npm-install (init)

QUEUE_BULL_REDIS_HOST=valkey-757370-XXXX.l.aivencloud.com

QUEUE_BULL_REDIS_USERNAME=default

QUEUE_BULL_REDIS_PASSWORD=PASSWORD_SECURE

QUEUE_BULL_REDIS_KEEP_ALIVE_DELAY=15000

QUEUE_BULL_REDIS_TLS=true

QUEUE_BULL_SETTINGS_LOCK_RENEW_TIME=30000

QUEUE_BULL_SETTINGS_LOCK_DURATION=60000

QUEUE_BULL_REDIS_DB=0

QUEUE_BULL_SETTINGS_STALLED_INTERVAL=60000

QUEUE_BULL_REDIS_TIMEOUT=30000

QUEUE_BULL_REDIS_DUALSTACK=false

QUEUE_BULL_REDIS_PORT=21275

QUEUE_BULL_REDIS_CONNECTION_TIMEOUT=30000

=== pod/n8n-worker-7fb4c7d87d-k82xw ===

تم تعيين الحاوية الافتراضية "n8n-worker" من بين: n8n-worker, npm-install (init)

QUEUE_BULL_REDIS_KEEP_ALIVE_DELAY=15000

QUEUE_BULL_REDIS_TIMEOUT=30000

QUEUE_BULL_REDIS_DB=0

QUEUE_BULL_REDIS_DUALSTACK=false

QUEUE_BULL_REDIS_USERNAME=default

QUEUE_BULL_SETTINGS_LOCK_DURATION=60000

QUEUE_BULL_REDIS_PASSWORD=PASSWORD_SECURE

QUEUE_BULL_REDIS_HOST=valkey-757370-XXXX.l.aivencloud.com

QUEUE_BULL_REDIS_TLS=true

QUEUE_BULL_REDIS_PORT=21275

QUEUE_BULL_SETTINGS_STALLED_INTERVAL=60000

QUEUE_BULL_REDIS_CONNECTION_TIMEOUT=30000

QUEUE_BULL_SETTINGS_LOCK_RENEW_TIME=30000

=== pod/n8n-worker-7fb4c7d87d-kkdm9 ===

تم تعيين الحاوية الافتراضية "n8n-worker" من بين: n8n-worker, npm-install (init)

QUEUE_BULL_REDIS_DUALSTACK=false

QUEUE_BULL_REDIS_USERNAME=default

QUEUE_BULL_REDIS_DB=0

QUEUE_BULL_SETTINGS_LOCK_RENEW_TIME=30000

QUEUE_BULL_REDIS_PORT=21275

QUEUE_BULL_REDIS_TLS=true

QUEUE_BULL_REDIS_KEEP_ALIVE_DELAY=15000

QUEUE_BULL_SETTINGS_STALLED_INTERVAL=60000

QUEUE_BULL_SETTINGS_LOCK_DURATION=60000

QUEUE_BULL_REDIS_PASSWORD=PASSWORD_SECURE

QUEUE_BULL_REDIS_HOST=valkey-757370-XXXX.l.aivencloud.com

QUEUE_BULL_REDIS_TIMEOUT=30000

QUEUE_BULL_REDIS_CONNECTION_TIMEOUT=30000

=== pod/n8n-worker-7fb4c7d87d-lqt7j ===

تم تعيين الحاوية الافتراضية "n8n-worker" من بين: n8n-worker, npm-install (init)

QUEUE_BULL_SETTINGS_LOCK_DURATION=60000

QUEUE_BULL_REDIS_PASSWORD=PASSWORD_SECURE

QUEUE_BULL_REDIS_CONNECTION_TIMEOUT=30000

QUEUE_BULL_SETTINGS_STALLED_INTERVAL=60000

QUEUE_BULL_REDIS_USERNAME=default

QUEUE_BULL_REDIS_TLS=true

QUEUE_BULL_REDIS_DUALSTACK=false

QUEUE_BULL_SETTINGS_LOCK_RENEW_TIME=30000

QUEUE_BULL_REDIS_TIMEOUT=30000

QUEUE_BULL_REDIS_HOST=valkey-757370-XXXX.l.aivencloud.com

QUEUE_BULL_REDIS_KEEP_ALIVE_DELAY=15000

QUEUE_BULL_REDIS_DB=0

QUEUE_BULL_REDIS_PORT=21275

=== pod/n8n-worker-7fb4c7d87d-mspxz ===

تم تعيين الحاوية الافتراضية "n8n-worker" من بين: n8n-worker, npm-install (init)

QUEUE_BULL_REDIS_HOST=valkey-757370-XXXX.l.aivencloud.com

QUEUE_BULL_REDIS_DUALSTACK=false

QUEUE_BULL_REDIS_USERNAME=default

QUEUE_BULL_SETTINGS_LOCK_RENEW_TIME=30000

QUEUE_BULL_REDIS_CONNECTION_TIMEOUT=30000

QUEUE_BULL_REDIS_PORT=21275

QUEUE_BULL_REDIS_TLS=true

QUEUE_BULL_REDIS_PASSWORD=PASSWORD_SECURE

QUEUE_BULL_REDIS_TIMEOUT=30000

QUEUE_BULL_REDIS_DB=0

QUEUE_BULL_SETTINGS_LOCK_DURATION=60000

QUEUE_BULL_SETTINGS_STALLED_INTERVAL=60000

QUEUE_BULL_REDIS_KEEP_ALIVE_DELAY=15000

=== pod/n8n-worker-7fb4c7d87d-xqcr2 ===

تم تعيين الحاوية الافتراضية "n8n-worker" من بين: n8n-worker, npm-install (init)

QUEUE_BULL_REDIS_DUALSTACK=false

QUEUE_BULL_REDIS_KEEP_ALIVE_DELAY=15000

QUEUE_BULL_REDIS_TLS=true

QUEUE_BULL_REDIS_TIMEOUT=30000

QUEUE_BULL_REDIS_DB=0

QUEUE_BULL_SETTINGS_STALLED_INTERVAL=60000

QUEUE_BULL_REDIS_PASSWORD=PASSWORD_SECURE

QUEUE_BULL_SETTINGS_LOCK_DURATION=60000

QUEUE_BULL_SETTINGS_LOCK_RENEW_TIME=30000

QUEUE_BULL_REDIS_HOST=valkey-757370-XXXX.l.aivencloud.com

QUEUE_BULL_REDIS_PORT=21275

QUEUE_BULL_REDIS_CONNECTION_TIMEOUT=30000

QUEUE_BULL_REDIS_USERNAME=default

تلك ملفات المتغيرات البيئية مفيدة: الخادم الرئيسي و webhook والعمال جميعهم يشيرون الآن إلى نفس قائمة انتظار Valkey، لذلك لم يعد يبدو الأمر وكأنه استضافة Redis مختلفة أو منفذ أو إعداد TLS بين البودات.

السطران الناقصان هما بدء العامل الفعلي والمطالبة بالوظائف وحد سقف تجمع قاعدة البيانات. انشر سجل عامل واحد حول بدء التشغيل/الوظيفة 166 بالإضافة إلى DB_POSTGRESDB_POOL_SIZE وmax_connections في Postgres؛ مع ستة عمال، حتى تجمع Postgres صغير/max_connections يمكن أن يجعل الفشل يظهر كـ pg-pool حتى عندما يتطابق إعداد Redis.

{26-06-12 15:07}Antons-MacBook-Pro-2:~ anton% kubectl get pods -n n8n
NAME READY STATUS RESTARTS AGE
n8n-6687b7fb7d-vj2xr 1/1 Running 0 42s
n8n-postgresql-0 1/1 Running 0 17h
n8n-worker-7c5c5d5dc-x2x9d 1/1 Running 0 42s

حسناً، إذاً أنا أجعلها بسيطة جداً
أساسي واحد + عامل واحد (قاعدة البيانات في المجموعة)

=Worker=
لا يوجد علاقة بـ. 124 job

تم تعيين التزامن على أقل من 5. قد يؤدي هذا إلى بيئة غير مستقرة. يرجى التفكير في زيادته إلى 5 على الأقل للاستفادة القصوى من العامل.

n8n Task Broker جاهز على 127.0.0.1، المنفذ 5679

فشل بدء Python task runner في الوضع الداخلي. لأن Python 3 مفقود من هذا النظام. بدء Python runner في الوضع الداخلي مخصص فقط للتصحيح وليس موصى به للإنتاج. يتم تشجيع المستخدمين على النشر في الوضع الخارجي. انظر:


[license SDK] تخطي التجديد عند الحث: renewOnInit معطل في التكوين

[license SDK] تخطي التجديد عند الحث: autoRenewEnabled معطل في التكوين

[license SDK] تخطي التجديد عند الحث: شهادة الترخيص غير مهيأة

تم تسجيل المثيل

تم اكتشاف 4 فحوصات للمجموعة

خادم عامل n8n يستمع على المنفذ 5678

عامل n8n جاهز الآن

 * الإصدار: 2.25.7

 * التزامن: 2

تم تسجيل "JS Task Runner" (oqClB5JFV1-IPGaVNCRFu)

بدأ العامل تنفيذ 123 (وظيفة 167)

انتهى العامل من تنفيذ 123 (وظيفة 167)

=Main=
تنفيذ 124

تم الافتراض أن الحاوية "n8n-main" من بين: n8n-main, npm-install (init)

تهيئة عملية n8n

n8n جاهز على ::، المنفذ 5678

[license SDK] تخطي التجديد عند الحث: شهادة الترخيص غير مهيأة

محاولة إعادة تثبيت الحزم المفقودة

فشل تنفيذ أمر npm

فشل في إعادة تثبيت حزمة المجتمع n8n-nodes-minio: فشل تنفيذ أمر npm

فشل تنفيذ أمر npm

فشل في إعادة تثبيت حزمة المجتمع n8n-nodes-firebird: فشل تنفيذ أمر npm

تم تسجيل المثيل

تم اكتشاف 4 فحوصات للمجموعة

تحذير فحص المجموعة تم الكشف عن 3 مثيلات تدّعي دور القيادة: 0490eef8-9207-4ef7-a379-4699f18e001c, 2586c901-fd3c-4c06-a190-a4197e69f325

سير العمل النشط حالياً:

- سير العمل الخاص بي (المعرّف: QFQvCXo8mBhadrAM)

الإصدار: 2.25.7

جاري بناء فهرس تبعيات سير العمل...

بدء تفعيل سير العمل:

انتهى من بناء فهرس تبعيات سير العمل. تم معالجة 0 سير عمل مسودة، 0 سير عمل منشورة.

تم تفعيل سير العمل "سير العمل الخاص بي" (المعرّف: QFQvCXo8mBhadrAM)




يمكن الوصول إلى المحرر الآن عبر:

URL-HERE

تم إدراج التنفيذ 123 (وظيفة 167)

اكتمل التنفيذ 123 (وظيفة 167)

تم إدراج التنفيذ 124 (وظيفة 168)

حاول المستخدم الوصول إلى سير عمل بدون صلاحيات

فشل التنفيذ 124 (وظيفة 168)

الخطأ: انتهت مهلة الانتظار أثناء محاولة الاتصال

    at /usr/local/lib/node_modules/n8n/node_modules/.pnpm/pg-pool@3.6.2_pg@8.12.0/node_modules/pg-pool/index.js:45:11

    at PostgresDriver.obtainMasterConnection (/usr/local/lib/node_modules/n8n/node_modules/.pnpm/@n8n+typeorm@0.3.20-15_@sentry+node@9.42.1_mysql2@3.15.0_pg@8.12.0_sqlite3@5.1.7/node_modules/src/driver/postgres/PostgresDriver.ts:1181:28)

    at PostgresQueryRunner.query (/usr/local/lib/node_modules/n8n/node_modules/.pnpm/@n8n+typeorm@0.3.20-15_@sentry+node@9.42.1_mysql2@3.15.0_pg@8.12.0_sqlite3@5.1.7/node_modules/src/driver/postgres/PostgresQueryRunner.ts:248:36)

    at SelectQueryBuilder.loadRawResults (/usr/local/lib/node_modules/n8n/node_modules/.pnpm/@n8n+typeorm@0.3.20-15_@sentry+node@9.42.1_mysql2@3.15.0_pg@8.12.0_sqlite3@5.1.7/node_modules/src/query-builder/SelectQueryBuilder.ts:3660:25)

    at SelectQueryBuilder.getRawMany (/usr/local/lib/node_modules/n8n/node_modules/.pnpm/@n8n+typeorm@0.3.20-15_@sentry+node@9.42.1_mysql2@3.15.0_pg@8.12.0_sqlite3@5.1.7/node_modules/src/query-builder/SelectQueryBuilder.ts:1617:29)

    at SelectQueryBuilder.executeEntitiesAndRawResults (/usr/local/lib/node_modules/n8n/node_modules/.pnpm/@n8n+typeorm@0.3.20-15_@sentry+node@9.42.1_mysql2@3.15.0_pg@8.12.0_sqlite3@5.1.7/node_modules/src/query-builder/SelectQueryBuilder.ts:3322:26)

    at SelectQueryBuilder.getRawAndEntities (/usr/local/lib/node_modules/n8n/node_modules/.pnpm/@n8n+typeorm@0.3.20-15_@sentry+node@9.42.1_mysql2@3.15.0_pg@8.12.0_sqlite3@5.1.7/node_modules/src/query-builder/SelectQueryBuilder.ts:1661:29)

    at SelectQueryBuilder.getOne (/usr/local/lib/node_modules/n8n/node_modules/.pnpm/@n8n+typeorm@0.3.20-15_@sentry+node@9.42.1_mysql2@3.15.0_pg@8.12.0_sqlite3@5.1.7/node_modules/src/query-builder/SelectQueryBuilder.ts:1688:25)

    at ExecutionRepository.findSingleExecution (/usr/local/lib/node_modules/n8n/node_modules/.pnpm/@n8n+db@file+packages+@n8n+db_@opentelemetry+api@1.9.0_@opentelemetry+sdk-trace-base@1._ab22bba05a964211b9fe14bf4b841570/node_modules/@n8n/db/src/repositories/execution.repository.ts:315:21)

    at JobProcessor.processJob (/usr/local/lib/node_modules/n8n/src/scaling/job-processor.ts:57:21)




مشكلة في التنفيذ 124: الخطأ: انتهت مهلة الانتظار أثناء محاولة الاتصال. جاري الإحالة.

الخطأ: انتهت مهلة الانتظار أثناء محاولة الاتصال (التنفيذ 124)

الخطأ: الخطأ: انتهت مهلة الانتظار أثناء محاولة الاتصال

    at Queue.onFailed (/usr/local/lib/node_modules/n8n/node_modules/.pnpm/bull@4.16.4_patch_hash=a4b6d56db16fe5870646929938466d6a5c668435fd1551bed6a93fffb597ba42/node_modules/bull/lib/job.js:523:18)

    at processTicksAndRejections (node:internal/process/task_queues:104:5)




حاول المستخدم الوصول إلى سير عمل بدون صلاحيات

حاول المستخدم الوصول إلى سير عمل بدون صلاحيات

فُقد اتصال Redis. يجري محاولة إعادة الاتصال خلال 1 ثانية... (0 ثانية / 10 ثواني)

تم استرجاع اتصال Redis

فُقد اتصال Redis. يجري محاولة إعادة الاتصال خلال 1 ثانية... (0 ثانية / 10 ثواني)

تم استرجاع اتصال Redis

125 OK
إذاً هو نوع من العشوائي

==Worker==

n8n worker is now ready

Version: 2.25.7

Concurrency: 2

Registered runner "JS Task Runner" (oqClB5JFV1-IPGaVNCRFu)
Worker started execution 123 (job 167)
Worker finished execution 123 (job 167)
Lost Redis connection. Trying to reconnect in 1s... (0s/10s)
Recovered Redis connection
Recovered Redis connection
Lost Redis connection. Trying to reconnect in 1s... (0s/10s)
Recovered Redis connection
Lost Redis connection. Trying to reconnect in 1s... (0s/10s)
Recovered Redis connection
Recovered Redis connection
Lost Redis connection. Trying to reconnect in 1s... (0s/10s)
Recovered Redis connection
Worker started execution 125 (job 169)
Worker finished execution 125 (job 169)

=Main=

Problem with execution 124: Error: timeout exceeded when trying to connect. Aborting.
Error: timeout exceeded when trying to connect (execution 124)
Error: Error: timeout exceeded when trying to connect
at Queue.onFailed (/usr/local/lib/node_modules/n8n/node_modules/.pnpm/bull@4.16.4_patch_hash=a4b6d56db16fe5870646929938466d6a5c668435fd1551bed6a93fffb597ba42/node_modules/bull/lib/job.js:523:18)
at processTicksAndRejections (node:internal/process/task_queues:104:5)

User attempted to access a workflow without permissions
User attempted to access a workflow without permissions
Lost Redis connection. Trying to reconnect in 1s... (0s/10s)
Recovered Redis connection
Lost Redis connection. Trying to reconnect in 1s... (0s/10s)
Recovered Redis connection
Lost Redis connection. Trying to reconnect in 1s... (0s/10s)
Recovered Redis connection
Lost Redis connection. Trying to reconnect in 1s... (0s/10s)
Recovered Redis connection
Lost Redis connection. Trying to reconnect in 1s... (0s/10s)
Recovered Redis connection
Lost Redis connection. Trying to reconnect in 1s... (0s/10s)
Recovered Redis connection
Lost Redis connection. Trying to reconnect in 1s... (0s/10s)
Recovered Redis connection
Lost Redis connection. Trying to reconnect in 1s... (0s/10s)
Recovered Redis connection
Lost Redis connection. Trying to reconnect in 1s... (0s/10s)
Recovered Redis connection
Enqueued execution 125 (job 169)
Execution 125 (job 169) finished
User attempted to access a workflow without permissions

أجريت اختبارًا إضافيًا
بدأت pod جديدة داخل مساحة العمل n8n

redis-cli
-h ``valkey-XXXX.l.aivencloud.com``
-p 21275
--tls
--user default
-a 'YOUR_PASSWORD'
SUBSCRIBE test

واستخدمت عميلًا آخر من جهاز الكمبيوتر الخاص بي لإرسال الأحداث

while true; do
redis-cli
-h ``valkey-XXXX.l.aivencloud.com``
-p 21275
--tls
--user default
-a 'YOUR_PASSWORD'
PUBLISH test hello
sleep 1
done

=النتيجة=
الـ pod الجديدة لم تفقد الاتصال بـ redis

  1. “hello”

  2. “message”

  3. “test”

  4. “hello”

  5. “message”

  6. “test”

  7. “hello”

  8. “message”

  9. “test”

    =بينما العامل n8n=

    
    تم استعادة اتصال Redis
    
    فقد اتصال Redis. جاري محاولة إعادة الاتصال في 1 ثانية... (0 ثانية/10 ثوانٍ)
    
    تم استعادة اتصال Redis
    
    فقد اتصال Redis. جاري محاولة إعادة الاتصال في 1 ثانية... (0 ثانية/10 ثوانٍ)
    
    تم استعادة اتصال Redis
    
    فقد اتصال Redis. جاري محاولة إعادة الاتصال في 1 ثانية... (0 ثانية/10 ثوانٍ)
    
    تم استعادة اتصال Redis
    
    فقد اتصال Redis. جاري محاولة إعادة الاتصال في 1 ثانية... (0 ثانية/10 ثوانٍ)
    
    تم استعادة اتصال Redis
    
    تم استعادة اتصال Redis
    
    فقد اتصال Redis. جاري محاولة إعادة الاتصال في 1 ثانية... (0 ثانية/10 ثوانٍ)
    
    تم استعادة اتصال Redis
    
    فقد اتصال Redis. جاري محاولة إعادة الاتصال في 1 ثانية... (0 ثانية/10 ثوانٍ)
    
    تم استعادة اتصال Redis
    
    فقد اتصال Redis. جاري محاولة إعادة الاتصال في 1 ثانية... (0 ثانية/10 ثوانٍ)
    
    تم استعادة اتصال Redis
    
    فقد اتصال Redis. جاري محاولة إعادة الاتصال في 1 ثانية... (0 ثانية/10 ثوانٍ)
    
    تم استعادة اتصال Redis
    
    تم استعادة اتصال Redis
    
    فقد اتصال Redis. جاري محاولة إعادة الاتصال في 1 ثانية... (0 ثانية/10 ثوانٍ)
    
    تم استعادة اتصال Redis
    
    فقد اتصال Redis. جاري محاولة إعادة الاتصال في 1 ثانية... (0 ثانية/10 ثوانٍ)
    
    تم استعادة اتصال Redis
    
    فقد اتصال Redis. جاري محاولة إعادة الاتصال في 1 ثانية... (0 ثانية/10 ثوانٍ)
    
    تم استعادة اتصال Redis
    
    فقد اتصال Redis. جاري محاولة إعادة الاتصال في 1 ثانية... (0 ثانية/10 ثوانٍ)