فشل تحديث 2.6.0 beta 3 على القرص و/أو مساحة الذاكرة

أتساءل، بالإضافة إلى مشكلات مساحة القرص، هل تجاوزت عملية الترقية الذاكرة المتاحة (1 جيجابايت) المخصصة للنقطة؟ يمكنك رؤية مرجع إلى ‘نفذت الذاكرة’ كالعنصر الأول المسجل في لقطة شاشة وحدة التحكم أعلاه بعد تشغيل أمر ./launcher rebuild app.

ما لم أذكره هو أنه بعد تلك المحاولة، توقفت وحدة التحكم عن الاستجابة (رغم أنني كنت في تلك المرحلة أستخدم وحدة التحكم المستندة إلى الويب في لوحة تحكم Digital Ocean، وهي دائمًا غير مستقرة)، ثم قمت بإعادة تشغيل النقطة بالطاقة. (بعد ذلك استخدمت PuTTY).

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

آه، قاتل استنفاد الذاكرة (OOM killer) قد عمل. هذا بالتأكيد ليس بالأمر الجيد. عادةً ما أنصح بزيادة مساحة الذاكرة التبادلية (swap). يمكنك رؤية الاستخدام الحالي باستخدام الأمر swapon، وفي حالتي:

# swapon 
NAME      TYPE SIZE USED PRIO
/swapfile file   2G   3M   -2

أيضًا الأمر free:

# free
              total        used        free      shared  buff/cache   available
Mem:        1992060      792904       80148       34696     1119008     1004956
Swap:       2097148        3084     2094064

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

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

سيكون من الجيد رؤية نتائج الأمر du مرة أخرى، بعد أن قمت بكل عمليات التنظيف.

أتساءل: هل الـ 1 جيجابايت هي تخصيص الذاكرة العشوائية (RAM) والـ 25 جيجابايت هي تخصيص القرص؟ الأمران مختلفان تمامًا.

تعديل: القصة القياسية المدعومة، كما أعتقد، هي أن يكون لديك ذاكرة عشوائية أكثر من 1 جيجابايت.
تعديل: لا، يبدو أن 1 جيجابايت لا تزال الحد الأدنى الموصى به مطلقًا.

لقد قمت بالاتصال مجددًا، وأظهرت معلومات النظام عند فتح نافذة وحدة التحكم ما يلي:

تحميل النظام: 0.01               العمليات: 136
استخدام /: 59.4% من 24.06 جيجابايت   المستخدمون المسجلون: 0
استخدام الذاكرة: 73%                عنوان IP لـ eth0: 159.65.140.176
استخدام مساحة التبديل: 17%           عنوان IP لـ docker0: 172.17.0.1

إذن، هل تعني مساحة التبديل بنسبة 17% أنها تساوي 4 جيجابايت؟
مع عدم وجود أي مستخدم مسجل الدخول إلى المنتدى، ومع وجود اتصال PuTTY الحالي فقط مع droplet نشط، فإن الذاكرة العشوائية (RAM) ممتلئة بنسبة 73%، مما يشير إلى أن أي نشاط بسيط قد يدفع المنتدى إلى استخدام مساحة التبديل. وإذا كان ذلك يستهلك من مساحة الـ 24 جيجابايت، فقد يُشكّل ذلك العاصفة المثالية أثناء التحديث، خاصةً مع ارتفاع استخدام مساحة القرص بالفعل؟

du -kx / | sort -n | tail -33 يعطيني الآن:

root@nz:~# du -kx / | sort -n | tail -33
505512  /usr/bin
528784  /var/lib/docker/overlay2/3b68a713bd8e9a7f3b2a69ba8084a770b796e555e887ce4f66698d3894430c35/diff/var/www/discourse/vendor/bundle/ruby/2.6.0
528788  /var/lib/docker/overlay2/3b68a713bd8e9a7f3b2a69ba8084a770b796e555e887ce4f66698d3894430c35/diff/var/www/discourse/vendor/bundle/ruby
528792  /var/lib/docker/overlay2/3b68a713bd8e9a7f3b2a69ba8084a770b796e555e887ce4f66698d3894430c35/diff/var/www/discourse/vendor/bundle
536848  /var/lib/docker/overlay2/3b68a713bd8e9a7f3b2a69ba8084a770b796e555e887ce4f66698d3894430c35/diff/var/www/discourse/vendor
548952  /var/lib/docker/overlay2/c126267f944d8d7f12415ac4f5908eba8a6a686b093cad3e0115eded8edfd6ba/diff
548968  /var/lib/docker/overlay2/c126267f944d8d7f12415ac4f5908eba8a6a686b093cad3e0115eded8edfd6ba
817700  /var/lib/docker/overlay2/3b68a713bd8e9a7f3b2a69ba8084a770b796e555e887ce4f66698d3894430c35/diff/usr/lib
827812  /var/log/journal/8bebc832e1a692c83690ffe65e1256e3
868792  /var/log/journal
1069356 /var/lib/docker/overlay2/3b68a713bd8e9a7f3b2a69ba8084a770b796e555e887ce4f66698d3894430c35/diff/var/www/discourse
1069368 /var/lib/docker/overlay2/3b68a713bd8e9a7f3b2a69ba8084a770b796e555e887ce4f66698d3894430c35/diff/var/www
1069396 /var/log
1142352 /var/lib/docker/overlay2/3b68a713bd8e9a7f3b2a69ba8084a770b796e555e887ce4f66698d3894430c35/diff/var
1202004 /var/discourse/shared/standalone/import/data
1307816 /var/discourse/shared/standalone/import
1362804 /var/lib/docker/overlay2/3b68a713bd8e9a7f3b2a69ba8084a770b796e555e887ce4f66698d3894430c35/diff/usr
1399332 /var/discourse/shared/standalone/backups/default
1399336 /var/discourse/shared/standalone/backups
1709408 /usr
2438224 /var/discourse/shared/standalone/postgres_data/base/16583
2462944 /var/discourse/shared/standalone/postgres_data/base
2481288 /var/discourse/shared/standalone/postgres_data
2540188 /var/lib/docker/overlay2/3b68a713bd8e9a7f3b2a69ba8084a770b796e555e887ce4f66698d3894430c35/diff
2540204 /var/lib/docker/overlay2/3b68a713bd8e9a7f3b2a69ba8084a770b796e555e887ce4f66698d3894430c35
3387776 /var/lib/docker/overlay2
3460136 /var/lib/docker
3830584 /var/lib
5629420 /var/discourse/shared/standalone
5629504 /var/discourse/shared
5632224 /var/discourse
10747244        /var
14961492        /
root@nz:~#

أعتقد أنه يمكنك تحسين ذلك باستخدام journalctl، ربما مع الأمر:

# journalctl --vacuum-size=50M

(الذي يمكنك تنفيذه فورًا قبل محاولة الترقية)

من المثير للاهتمام أن استخدام PostgreSQL لم ينخفض.

أمر free سيُظهر لك استخدام الذاكرة الافتراضية (Swap): فهي مستخدمة بنسبة 17% من كمية معينة، على الأرجح 2 جيجابايت.

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

أعتذر - أنت محق تمامًا. كان 1 جيجابايت هو الذاكرة العشوائية (RAM)، وليس مساحة القرص المستخدمة.

صحيح مرة أخرى

root@nz:~# free
              total        used        free      shared  buff/cache   available
Mem:        1008828      655660       61716      102288      291452       96576
Swap:       2097148      459776     1637372

أتساءل ما إذا كان يجب على عملية الترقية تقييم قدرة النظام المضيف على تنفيذ الترقية مباشرة قبل بدئها؟

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

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

للأسف، أنا أقرب جدًا إلى جانب ‘تقليل التكاليف’ في الميزانية - فالمنتدى هو جهد تطوعي بحت لا يدر أي دخل، ومع إضافة ميزة النشر عبر البريد الإلكتروني (عن طريق MailGun) التي يطالب بها المستخدمون، فإن تكاليف تشغيله شهريًا ترتفع قليلاً.

وبالمقارنة مع الهوايات الأخرى، أعتقد أنه أرخص من الترويح في نوادي الليل!