مشكلة نفاد الذاكرة

مرحباً بك في مجتمع n8n،

أواجه مشكلة خطيرة في نفاد الذاكرة على مثيل n8n Cloud الخاص بي بعد تحديث أمان n8n الأخير.

كانت سير عملي تعمل بشكل مثالي تماماً حتى 25 يونيو وكانت تعمل بشكل موثوق لمدة 7 أشهر الماضية. لم أجري أي تغييرات على سير العمل أو العقدة أو بيانات الاعتماد أو الإعدادات أو متغيرات البيئة خلال الأسبوع الماضي.

بعد تحديث إصدار الأمان الأخير لـ n8n، بدأت سير عمل الإنتاج المتعددة في الفشل أثناء التنفيذ. عندما يتم تشغيل سير العمل هذه، يصبح المثيل غير مستقر أو غير مستجيب، وتتوقف الأتمتة عن التشغيل، وفي النهاية ينفد المثيل من الذاكرة.

حاولت بالفعل حذف عمليات التنفيذ المحفوظة، وتقليل سجل التنفيذ، وإزالة عقد الانتظار لتقليل استخدام الذاكرة، لكن المشكلة لا تزال مستمرة. حتى بعد حذف عمليات التنفيذ، عندما يتم تشغيل سير العمل مرة أخرى، يظل المثيل ينفد من الذاكرة أو يتعطل.

حدثت نفس المشكلة أيضاً في مايو بعد تحديث n8n Cloud. في ذلك الوقت، كان سير عملي مستقراً أيضاً لعدة أشهر بدون أي تغييرات من جانبي، لكن بعد التحديث بدأ المثيل في التعطل مع أخطاء نفاد الذاكرة. تم حل المشكلة في النهاية بعد أن قام n8n بتحديث المثيل. الآن، بعد آخر تحديث، أواجه نفس نوع المشكلة مرة أخرى.

بدأ هذا فقط بعد التحديث الأخير، لذا أريد أن أفهم ما إذا كان هناك أي تغيير حديث في n8n Cloud متعلق بمعالجة الذاكرة أو سلوك التنفيذ أو عمليات التنفيذ الفرعية أو تزامن سير العمل أو سلوك العقدة.

سأقدر التوجيهات من فريق n8n أو المجتمع حول كيفية تصحيح هذا والتعرف على سبب ارتفاع الذاكرة.

أود أيضاً أن أعرف ما إذا كان أي شخص آخر يواجه نفس المشكلة بعد التحديث الأخير، أو إذا كان هذا يحدث فقط على مثيلي.

المخرجات التي أرجعتها العقدة الأخيرة

يفشل سير العمل قبل الانتهاء بنجاح. يظهر حالة التنفيذ خطأ، والمشكلة الرئيسية هي سلوك نفاد الذاكرة على مستوى المثيل.

في بعض الحالات، تفشل عمليات التنفيذ بسرعة كبيرة جداً، على سبيل المثال في غضون ميلي ثانية. في حالات أخرى، يتم تشغيلها لعدة ثوانٍ قبل الفشل.

يصبح المثيل أيضاً غير مستقر أو غير مستجيب عندما يتم تشغيل سير العمل.

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

إصدار n8n: أحدث إصدار n8n Cloud محدّث
قاعدة البيانات: قاعدة بيانات n8n Cloud المدارة
إعداد n8n EXECUTIONS_PROCESS: n8n Cloud المدار / لم يتم تكوينه مباشرة من قِبلي
تشغيل n8n عبر: n8n Cloud
نظام التشغيل: n8n Cloud المدار / غير قابل للتطبيق

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

كان سير العمل مستقراً قبل التحديث الأخير. بدأت هذه المشكلة بعد التحديث، بدون أي تغييرات من جانبي.

أود أن أعرف:

  1. هل كان هناك أي تحديث حديث لـ n8n غيّر استخدام الذاكرة أو معالجة التنفيذ أو تزامن سير العمل أو سلوك العقدة؟

  2. هل توجد أي حل بديل أو تصحيح أو خيار التراجع أو إعداد موصى به لتثبيت المثيل؟

  3. بما أن نفس المشكلة حدثت في مايو بعد تحديث n8n وتم حلها من جانب n8n، هل يمكن للفريق أن يتحقق مما إذا كانت هذه مشكلة مشابهة على مستوى المثيل أو متعلقة بالإصدار؟

@Asher_TMT عدد قليل من الأشخاص واجهوا نفس مشكلة OOM بعد التحديث على Cloud، لذا هذا يشير إلى انحدار في الذاكرة في الإصدار الذي تم تحديثك إليه تلقائياً، وليس شيء قمت به أنت. أي إصدار انتقل Cloud بك منه وإليه حول الـ 25، هذا يحدده. من حيث الآلية، n8n يحتفظ ببيانات كل items في الذاكرة للتنفيذ بأكمله، لذا build يحمل أكثر لكل item يجعل workflows التي كانت محددة الحجم بشكل صحيح تتجاوز الحد. بما أن تقليص السجل المحفوظ لم يساعد، الرافعة الخاصة بك في الذاكرة أثناء التشغيل وليس السجل المخزن، أسقط الحقول الكبيرة باستخدام عقدة Set بين العقد الثقيلة وقسّم الخطوات الأثقل إلى sub-workflows بحيث يحصل كل واحد على نطاق ذاكرة خاص به.

هذا النمط يستحق أن تأخذه على محمل الجد: مستقر لمدة 7 أشهر، بدون أي تغييرات من جانبك، ثم ينقطع مباشرة بعد تحديث المنصة، والشيء نفسه بالضبط حدث في مايو وتم حله عندما قامت n8n بتحديث نسختك. هذا الترابط يشير بشكل أكبر إلى انحدار على مستوى النسخة/المثيل بدلاً من سير العمل الخاص بك. إليك بعض الأفكار، مقسمة إلى “ما يمكن فقط لـ n8n القيام به” و"ما يمكنك فعله لتضييق الخناق".

صعّد الأمر مباشرة — هذا هو مسار الإصلاح الحقيقي. لأنك على n8n Cloud، الأشياء التي تحل مشاكل الذاكرة على مستوى المثيل (تصحيح، أو استعادة، أو ترقية المثيل) على جانب n8n، وليس على جانبك — تماماً كما حدث في مايو. افتح تذكرة دعم وأشر بوضوح إلى حادثة مايو (نفس الأعراض، تم حلها بواسطة تحديث n8n للمثيل)، بالإضافة إلى التاريخ الذي بدأ فيه (25 يونيو) والنسخة قبل/بعد. هذا الإطار يميل إلى توجيهه كانحدار بدلاً من سؤال تكوين.

في الوقت نفسه، ضيّق نطاق الجاني — هذا يبقيك يعمل ويعطي الدعم إصلاحاً أسرع:

  • ابحث عن سير العمل الذي يسبب الخلل. في التنفيذات، اربط طوابع زمن التعطل مع سير العمل الذي كان قيد التشغيل. ارتفاع الذاكرة دائماً ما يتتبع إلى سير عمل واحد أو اثنين، وليس كلهم.
  • ذنوب الذاكرة الشائعة (قد يؤدي التحديث إلى تغيير سلوك العقدة بما يكفي لدفع سير عمل كان يعمل بشكل جيد إلى ما وراء الحد): الحمولات الكبيرة المحتفظ بها في الذاكرة (استجابات HTTP كبيرة، ملفات ثنائية/صور/ملفات PDF تمر عبر عقد كثيرة)، الحلقات / SplitInBatches التي تتراكم جميع العناصر بدلاً من المعالجة على دفعات، وتنفيذ سير العمل الفرعي (“Execute Workflow”) مع تنفيذ الأطفال مضروباً في التزامن.
  • عزل بالتعطيل. أوقف مؤقتاً أثقل سير عمل / الأكثر تكراراً واحداً تلو الآخر وراقب متى يصبح المثيل مستقراً — هذا يحدد السبب بسرعة.
  • رافعة واحدة يتجاهلها الناس: بعيداً عن سجل التنفيذ العام، تحقق من إعدادات كل سير عمل ثقيل وعيّن “Save execution progress” إلى إيقاف و"Save successful executions" إلى إيقاف. يكتب حفظ التقدم بيانات كل عقدة وهي تكلفة ذاكرة حقيقية على سير عمل الحمولة الكبيرة. لقد قمت بالفعل بتقليل السجل العام، لكن هذا الإعداد لكل سير عمل منفصل.
  • للسير العملي بيانات كبيرة، قسّم / دفعات حتى لا تحتفظ بمجموعة البيانات الكاملة في الذاكرة مرة واحدة، وتجنب تمرير الملفات الثنائية عبر عقد أكثر من اللازم.

لتسريع التذكرة، أعطهم: النسخة الدقيقة قبل/بعد، تاريخ البداية، مرجع تذكرة مايو، سير العمل المحدد + العقدة، بضعة معرّفات تنفيذ متعطلة، وما إذا كانت مرتبطة بالتنفيذات المتزامنة. هذا عادة ما يكون كافياً لهم لإعادة الإنتاج.

نظراً إلى السابقة في مايو، قراءتي الصادقة هي أن هذا على الأرجح شيء يحتاج n8n إلى إصلاحه من جانبهم — لكن الخطوات أعلاه يجب أن تبقيك مستقراً وتجعل الإصلاح أسرع على أي حال.

زاوية انحدار الذاكرة تبدو معقولة، خاصة إذا لم يتغير شيء في سير العمل لديك وبدأت الأعطال مباشرة بعد تحديث Cloud. المسار التقني الفوري هو تقليل الذاكرة أثناء التنفيذ: احذف الحقول الكبيرة في أقرب وقت ممكن، قسّم الفروع الثقيلة إلى سير عمل فرعي، تجنب نقل الحمولات الكاملة عبر العقد اللاحقة، وعزل سير العمل الذي يسبب ارتفاعاً في الذاكرة أولاً.

بالنسبة لسير العمل الإنتاجي، كنت سأتعامل مع هذا كحادثة وليس كمجرد مهمة تصحيح أخطاء:

  1. اسرد سير العمل التي تفشل والعملاء/العمليات التي تتأثر بها.
  2. سجّل متى بدأت المشكلة وأي إصدار من n8n تم تحديثه.
  3. أضف فحصاً مؤقتاً يؤكد أن سير العمل الحرج يكتمل.
  4. وثّق التخفيف الذي طبقته، مثل إزالة الحقول أو تقسيم سير العمل الفرعي.
  5. قرّر ما إذا كان العميل/صاحب المصلحة يحتاج إلى تحديث الحالة.

الخطر التشغيلي هو أن سير العمل المتعدد قد يفشل بصمت بينما ينصب الجميع اهتمامهم على السبب الجذري. احتفظ بسجل مشاكل قصير حتى تستقر المنصة مرة أخرى.