يتجمد الجهاز بالكامل أثناء الترقية

منذ أن جربت إضافات الذكاء الاصطناعي (ثم أزلتها مرة أخرى)، يتجمد جهازي تمامًا أثناء /admin/upgrade.

ليس في كل مرة ولكن في حوالي 80٪ من الوقت.

عادةً ما يتجمد مثيل EC2 بالكامل وأضطر إلى إعادة تشغيل قسري من خلال واجهة الويب الخاصة بـ AWS EC2.

اليوم يتجمد مرة أخرى. لمفاجأتي، لا يتجمد تمامًا. عند فتح عنوان URL الجذر، يظهر الآن:

عفوًا

واجه البرنامج الذي يدعم منتدى المناقشة هذا مشكلة غير متوقعة. نعتذر عن الإزعاج.

تم تسجيل معلومات مفصلة حول الخطأ، وتم إنشاء إشعار تلقائي. سنلقي نظرة عليه.

لا يلزم اتخاذ أي إجراء آخر. ومع ذلك، إذا استمرت حالة الخطأ، يمكنك تقديم تفاصيل إضافية، بما في ذلك خطوات لتكرار الخطأ، عن طريق نشر موضوع مناقشة في فئة ملاحظات الموقع.

سأحاول الآن إعادة تشغيله مرة أخرى وأقوم بإجراء الأمر المعتاد sudo ./launcher rebuild app الذي أصلحه حتى الآن. دعنا نأمل أن يفعل ذلك اليوم مرة أخرى.

سؤالي

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

ملحق الذكاء الاصطناعي الرسمي؟

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

إعجاب واحد (1)

نعم، المكون الإضافي الرسمي.

لقد قمت بإلغاء تثبيته عن طريق إزالة المكونات الإضافية من app.yml مرة أخرى ثم إعادة البناء. ربما هذا لا يكفي؟

ماذا يُقصد بـ “هذا”؟ هل هو sudo ./launcher rebuild app؟

إعجاب واحد (1)

ما هي مواصفات الخادم الخاص بك؟

الترقيات عبر الإنترنت في رأيي تتطلب خادم 4 جيجابايت + 2 جيجابايت تبديل هذه الأيام كحد أدنى.

إعجابَين (2)

أنا أستخدم AWS EC2 “t2.medium” مع 2 vCPUs و 4 جيجابايت من ذاكرة الوصول العشوائي.

القرص الصلب هو 100 جيجابايت مع 60 جيجابايت من المساحة الخالية.

إذا كان ذلك يساعد، يمكنني ترقية “t2.medium” إلى نوع مثيل أكبر.

أنا فقط مرتبك لأن هذه الإعدادات كانت تعمل بشكل جيد (لسنوات) قبل اختباري للمكون الإضافي الرسمي للذكاء الاصطناعي وفقط منذ إزالته تحدث هذه التعليقات أثناء الترقية.

إعجاب واحد (1)

شيء آخر قد تغير: إصدار البرنامج الذي تقوم بالترقية إليه. لقد أصبح يستهلك المزيد من الذاكرة مؤخرًا. لذلك أعتقد أنه يمكن أن يكون أيًا منهما.

ترقية مؤقتة وقابلة للعكس إلى نسخة تحتوي على ذاكرة وصول عشوائي (RAM) أكبر هي على الأرجح أسهل طريقة لاختبار ما إذا كان نقص الذاكرة هو المشكلة، على الرغم من أنها تتطلب إعادة تشغيل. الطريقة الأخرى هي إضافة مساحة تبديل (swap)، وهي أيضًا قابلة للعكس.

3 إعجابات

سأحاول إضافة المبادلة.

إعجابَين (2)

شكراً لكم يا رفاق، سأبحث في جوجل عن كيفية القيام بذلك ثم سأقوم به :slight_smile:.

تحديث 1

لقد أضفت الآن 8 جيجابايت من مساحة التبديل (swap):

$ free -h
               total        used        free      shared  buff/cache   available
Mem:           3.8Gi       290Mi       2.9Gi       1.0Mi       677Mi       3.3Gi
Swap:          8.0Gi          0B       8.0Gi

سأنشر تحديثًا هنا بعد بعض الترقيات التالية لمعرفة ما إذا كان هذا قد ساعد.

تحديث 2

لقد قمت للتو بترقية /admin/upgrade وراقبت استخدام ذاكرة الوصول العشوائي (RAM):

$ free -h
               total        used        free      shared  buff/cache   available
Mem:           3.8Gi       1.4Gi       1.5Gi        50Mi       891Mi       2.0Gi
Swap:          8.0Gi       200Mi       7.8Gi

واكتملت الترقية بنجاح. :tada: آمل أن يبقى الأمر كذلك.

تحديث 3

بعد عدة أيام وترقيات، لم أواجه أي تعليق مرة أخرى.

لذلك أعتقد أن مساحة التبديل كانت الحل. شكراً مرة أخرى لكل من ساعدني في هذه المشكلة.

إعجابَين (2)

هذا خارج الموضوع قليلاً، لكنني أود حقًا أن أفهم. لماذا استخدم التبديل، الذي استهلك 200 ميجابايت، المساعدة عندما كان هناك 2 جيجابايت من ذاكرة الوصول العشوائي المجانية؟

(أتفهم أن النظام الدولي للوحدات يمكن أن يكون مربكًا في عالم البوصة لأنه يستخدم مقياس 10، ولكن لماذا بحق الجحيم Mi؟ يمكنني أن أفهم نوعًا ما Gi إذا كان اختصارًا لـ giga، ولكن هل يجب أن يكون mega ثم Me؟)

إعجاب واحد (1)

أفترض أن Mi تعني Mibibytes، و Gi تعني Gibibytes.

إعجاب واحد (1)

شكرا. لم أكن أعرف ذلك، هذا واضح. لكنها ميبي بايت :wink:

وللآخرين الذين لم يعرفوا أيضًا :smirking_face:

إعجابَين (2)

أعتقد أن المشكلة الأصلية كانت على الأرجح عملية يتم إنهاؤها لأن الجهاز كان ينفد من الذاكرة (احذر من قاتل OOM). إضافة المبادلة تعني أن الذاكرة لم تستنفد. قد لا تخبرنا هاتان المخرجات المجانية بالقصة بأكملها، إلا إذا تم أخذها بعناية فائقة في لحظة أقصى ضغط للجهاز. أعتقد أن ذروة استخدام المبادلة هي الشيقة.

ولكن هناك أيضًا مسألة ضبط نواة النظام كما هو مذكور في
تكوين نشر Discourse الرأي لـ MKJ
والتي قمت بتعيينها بشكل صحيح، ولكن ربما لم يقم الكثير من الأشخاص بتعيينها بشكل صحيح.

تجدر الإشارة إلى أن تجاوز الذاكرة لا علاقة له بـ Redis. إنه فقط أن Redis لطيف بما يكفي للإشارة إلى أنه يجب تعيينه بشكل صحيح.

3 إعجابات

بدأت للتو عملية /admin/upgrade أخرى وكان لديّ shell مفتوح لاستدعاء tree -h يدويًا كل ثانية تقريبًا.

أعلى قيم استخدام الذاكرة التي تمكنت من العثور عليها كانت هذه:

$ free -h
               total        used        free      shared  buff/cache   available
Mem:           3.8Gi       3.2Gi       120Mi        80Mi       542Mi       266Mi
Swap:          8.0Gi       276Mi       7.7Gi

نجحت عملية الترقية.

إعجاب واحد (1)

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

وهذا شيء آخر لا أفهمه: لماذا يعاني الآخرون من نقص الذاكرة بينما أنا، الذي أستخدم الكثير من الإضافات والمكونات، لم أواجه أي مشاكل :thinking: ما الذي يحدث هذا الفرق؟

وقد استخدمت واجهت لأنني الآن لدي 8 جيجابايت بسبب الذكاء الاصطناعي (وبالنسبة لي لم يكن فرق السعر مهمًا جدًا، ولكن هذه قصة أخرى).

هل يجب أن ينتقل هذا الموضوع إلى مكان آخر أم أننا نرى هذا كتفسير لماذا ساعد استخدام التبديل؟

على أي حال. بالنسبة للمبتدئين الآخرين، هذا مثال واحد حيث يتم الحديث قليلاً عن نقص الذاكرة وأسباب ذلك:

هذا سؤال متكرر بقوة عند فشل الترقية. ولكن السبب نادرًا ما يتم شرحه.

إعجاب واحد (1)

@Jagster @uwe_keim يرجى الإبلاغ عن ناتج هذه الأوامر

cat /proc/sys/vm/overcommit_memory 
cat /sys/kernel/mm/transparent_hugepage/enabled 

على أنظمتي لدي

# cat /proc/sys/vm/overcommit_memory 
1
# cat /sys/kernel/mm/transparent_hugepage/enabled 
always madvise [never]
إعجاب واحد (1)
$ cat /proc/sys/vm/overcommit_memory
0

و

$ cat /sys/kernel/mm/transparent_hugepage/enabled
always [madvise] never
إعجاب واحد (1)

شكراً @uwe_keim - سأفترض أن هذه التعديلات على النواة هي السبب في حاجتك لإضافة مساحة تبديل، على الرغم من أنها لم تبدو مستخدمة. (وينطبق الشيء نفسه إذا كنت بحاجة إلى إضافة الكثير من ذاكرة الوصول العشوائي، لأن إجمالي الذاكرة المتاحة هو ذاكرة الوصول العشوائي + مساحة التبديل.)

إعجاب واحد (1)

يمكنني تغيير إعدادات الخادم في أي وقت إذا أوصيت بذلك.

root@foorumi-hel:/var/discourse# cat /proc/sys/vm/overcommit_memory
0
root@foorumi-hel:/var/discourse# cat /sys/kernel/mm/transparent_hugepage/enabled
always [madvise] never
إعجابَين (2)

أنا أوصي!

سيؤدي هذا إلى إصلاحه لإعادة التشغيل المستقبلية (لاحظ أنه سيتم الكتابة فوق الملفات دون التحقق من الحالة الحالية):

echo 'sys.kernel.mm.transparent_hugepage.enabled=never' > /etc/sysctl.d/10-huge-pages.conf
echo 'vm.overcommit_memory=1' > /etc/sysctl.d/90-vm_overcommit_memory.conf
sysctl --system
إعجاب واحد (1)