في سجلات الأخطاء، أتلقى أحيانًا الأخطاء التالية. يتسبب ذلك في عدم إمكانية الوصول إلى الموقع لمدة 15-30 ثانية حتى يعود.
رسالة خطأ Info:
PG::ConnectionBad (FATAL: the database system is in recovery mode) /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/pg-1.2.3/lib/pg.rb:58:in `initialize’
ملاحظة غريبة جدًا لاحظتها عند فحص هذه السجلات هي أنه يبدو أنه يبحث عن المجلد في /var/www/… لكن هذا المجلد غير موجود على الخادم. هل يجب أن يكون موجودًا؟ أي مساعدة موصى بها مُقدَّرة.
إذا كانت قاعدة البيانات تالفة، فإن الموقع سيكون تالفًا بالضرورة. يجب عليك معرفة السبب. الأسباب الأكثر شيوعًا هي نقص الذاكرة العشوائية (RAM) ومساحة القرص. تخميني هو أن المشكلة في الذاكرة العشوائية. كم ذاكرة عشوائية لديك؟ وما هو ناتج الأمر free -h؟
هذا هو المسار داخل الحاوية. إذا قمت بتشغيل الأمر ./launcher enter app، فسترى المجلد هناك.
حسنًا، لديك 646 ميجابايت متاحة، و4 جيجابايت كافية لدرجة أن استخدام مساحة التبديل (swap) لا يُوصى به عادةً. ما حجم قاعدة بياناتك؟ ما مقدار حركة المرور لديك؟ هل هناك أي شيء آخر يعمل على الخادم غير Discourse؟
./launcher enter app
rails db
SELECT pg_size_pretty(pg_database_size(current_database()));
كان الناتج النهائي 4650 ميجابايت (صف واحد).
أما بالنسبة لحركة المرور:
كان لدينا 1,200 مشاهدة للصفحة أمس، و12,400 في الأسبوع الماضي. حوالي 160 مستخدمًا في الأسبوع الماضي وحوالي 80 مستخدمًا متزامنًا في أي لحظة.
أنت رائع. يبدو أن مساحة التبديل البالغة 1 جيجابايت قد أوقفت جميع مشاكل التعطل. أنا حقًا سعيد لأن المشكلة كانت في ذاكرة الوصول العشوائي (RAM) وليس في قاعدة البيانات. سأقوم بزيادة كمية ذاكرة الوصول العشوائي على الخادم خلال عطلة نهاية الأسبوع. شكرًا جزيلاً للجميع الذين ساعدوا في هذا الموضوع!
في الحقيقة، لست متأكدًا تمامًا. قبل هذا، قمنا بإعادة بناء النظام وإعادة تشغيل الخادم بعد تغيير الأجهزة منذ فترة. أفترض أنه بعد إعادة التشغيل، كان من المفترض أن يلاحظ Discourse أي تغييرات في النظام.
بعد تثبيت ملف التبادل (swap file)، كانت هناك أوقات يُستخدم فيها أكثر من 4 جيجابايت من “الذاكرة”، مما يشير إلى أن هذه كانت بالتأكيد المشكلة خلال أوقات الذروة، والتي تتزامن مع الفترات التي تعطل فيها الخادم. قمنا بالترقية اليوم، والآن يعمل الموقع بشكل ممتاز.
لكنها ليست كذلك. هناك إعدادات تتحكم، على سبيل المثال، في مقدار ذاكرة الوصول العشوائي (RAM) التي يمكن لقاعدة البيانات استخدامها، وهي مدمجة في app.yml. يمكنك تحريرها يدويًا أو إعادة تشغيل discourse-setup.