مشكلة ذاكرة Unicorn عند تشغيل Discourse-docker

شغّل Docker بأحدث إصدار discourse-docker، مع 2 جيجابايت من الذاكرة و3 خيوط Unicorn.
هناك الكثير من أخطاء السجل كما هو موضح أدناه.

I, [2019-12-17T22:44:47.722151 #19487]  INFO -- : listening on addr=0.0.0.0:3000 fd=13
I, [2019-12-17T22:44:53.036892 #19487]  INFO -- : master process ready
I, [2019-12-17T22:44:55.704154 #19587]  INFO -- : worker=0 ready
I, [2019-12-17T22:44:56.644984 #19594]  INFO -- : worker=1 ready
I, [2019-12-17T22:44:57.595814 #19601]  INFO -- : worker=2 ready
I, [2019-12-18T05:12:51.517167 #19487]  INFO -- : reaped #<Process::Status: pid 19587 exit 0> worker=0
I, [2019-12-18T05:12:52.533342 #19487]  INFO -- : reaped #<Process::Status: pid 19594 exit 0> worker=1
Detected dead worker 19563, restarting...
I, [2019-12-18T05:12:53.551518 #19487]  INFO -- : reaped #<Process::Status: pid 19601 exit 0> worker=2
I, [2019-12-18T05:12:59.062671 #11689]  INFO -- : worker=1 ready
I, [2019-12-18T05:12:59.063307 #11680]  INFO -- : worker=0 ready
I, [2019-12-18T05:12:59.360555 #11706]  INFO -- : worker=2 ready
WARNING: V8 isolate was forked, it can not be disposed and memory will not be reclaimed till the Ruby process exits.
WARNING: V8 isolate was forked, it can not be disposed and memory will not be reclaimed till the Ruby process exits.
WARNING: V8 isolate was forked, it can not be disposed and memory will not be reclaimed till the Ruby process exits.
WARNING: V8 isolate was forked, it can not be disposed and memory will not be reclaimed till the Ruby process exits.
WARNING: V8 isolate was forked, it can not be disposed and memory will not be reclaimed till the Ruby process exits.
WARNING: V8 isolate was forked, it can not be disposed and memory will not be reclaimed till the Ruby process exits.
WARNING: V8 isolate was forked, it can not be disposed and memory will not be reclaimed till the Ruby process exits.
WARNING: V8 isolate was forked, it can not be disposed and memory will not be reclaimed till the Ruby process exits.
D, [2019-12-18T05:13:23.583306 #19487] DEBUG -- : waiting 16.0s after suspend/hibernation
I, [2019-12-18T05:13:44.194692 #19487]  INFO -- : reaped #<Process::Status: pid 11680 exit 0> worker=0
I, [2019-12-18T05:13:44.194960 #19487]  INFO -- : reaped #<Process::Status: pid 11689 exit 0> worker=1
I, [2019-12-18T05:13:44.195054 #19487]  INFO -- : reaped #<Process::Status: pid 11706 exit 0> worker=2
I, [2019-12-18T05:13:44.195120 #19487]  INFO -- : master complete
I, [2019-12-18T05:13:45.760881 #11795]  INFO -- : Refreshing Gem list

هل يواجه أي شخص آخر نفس المشكلة؟

هل تقوم بتشغيل أي إضافة غير رسمية؟ أم تقوم بتشغيل أي شيء آخر على الخادم؟ 2 جيجابايت يجب أن تكون أكثر من كافية…

شكرًا لك على الرد. يعمل الخادم على sidekiq و discourse فقط.

هل يمكنك تشغيل الأمر التالي:

cd /var/discourse
./discourse-doctor

ومشاركة الرابط معنا؟

@فالكو
شكرًا جزيلًا، إليك نتائج الفحص:

DISCOURSE DOCTOR الجمعة 20 ديسمبر 03:42:31 بتوقيت عالمي منسق 2019
نظام التشغيل: Linux int-communityweb-01w.our-internal-domain 3.10.0-1062.7.1.el7.x86_64 #1 SMP الاثنين 2 ديسمبر 17:33:29 بتوقيت عالمي منسق 2019 x86_64 x86_64 x86_64 GNU/Linux


YML=web_only.yml
تم العثور على containers/web_only.yml

==================== إعدادات YML ====================
DISCOURSE_HOSTNAME=int-communityweb-vip.our-internal-domain
SMTP_ADDRESS=our_smtp_server # (إلزامي)
DEVELOPER_EMAILS=مُحذَف
SMTP_PASSWORD=مُحذَف  (اختياري)
SMTP_PORT=25 # (اختياري)
SMTP_USER_NAME=# (اختياري)
LETSENCRYPT_ACCOUNT_EMAIL=مُحذَف

==================== معلومات Docker ====================
إصدار Docker: Docker version 17.05.0-ce، build 89658be

عمليات Docker (docker ps -a)

معرف الحاوية        الصورة                                                                                                             الأمر             تم الإنشاء منذ       الحالة                    المنافذ                الأسماء
e6c7024d0d4b        artifacts.our-internal-domain:8080/image/community:99-2.0.20191013-2320-tests-passed-b6b05d3b48-2019-12-16_09-28   "/sbin/boot"        منذ 43 ساعة         قيد التشغيل منذ 43 ساعة   0.0.0.0:80->80/tcp   web_only
703de08548b0        artifacts.our-internal-domain:8080/image/community:90-2.0.20190625-0946-tests-passed-ac7d68a-2019-08-30_09-36      "/sbin/boot"        منذ 4 أسابيع         خرجت (5) منذ 46 ساعة                        web_only_bak


حاوية Discourse web_only قيد التشغيل


==================== الإضافات ====================
          - git clone https://github.com/discourse/docker_manager.git
          - git clone https://gitlab.our-internal-domain/community/community-sso-plugin.git
          - git clone https://gitlab.our-internal-domain/community/community-ads-plugin.git
          - git clone  --branch upgarde-newrelic-gem https://gitlab.our-internal-domain/community/community-newrelic-plugin.git

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

راجع https://github.com/discourse/discourse/blob/master/lib/plugin/metadata.rb للحصول على القائمة الرسمية.

========================================
إصدار Discourse على int-communityweb-vip.our-internal-domain: Discourse 2.4.0.beta8
إصدار Discourse على localhost: Discourse 2.4.0.beta8


==================== معلومات الذاكرة ====================
نظام التشغيل: Linux
الذاكرة العشوائية (بالميجابايت): 1882

              الإجمالي        المستخدم        الحر        المشترك  المخزن مؤقتًا/المخزن المؤقت   المتاح
الذاكرة:           1838        1340          66           7         430         306
مساحة التبديل:          3071         388        2683

==================== فحص مساحة القرص ====================
---------- مساحة قرص نظام التشغيل ----------
نظام الملفات             الحجم  المستخدم المتاح نسبة الاستخدام مرفق على
/dev/mapper/vg00-root   19G   15G  3.3G  82% /
/dev/mapper/vg00-root   19G   15G  3.3G  82% /var/lib/docker/overlay
/dev/mapper/vg00-root   19G   15G  3.3G  82% /

---------- مساحة قرص الحاوية ----------


==================== معلومات القرص ====================

القرص /dev/sda: 21.5 جيجابايت، 21474836480 بايت، 41943040 قطاعًا
الوحدات = قطاعات بـ 1 * 512 = 512 بايت
حجم القطاع (المنطقي/الفيزيائي): 512 بايت / 512 بايت
حجم الإدخال/الإخراج (الحد الأدنى/المثالي): 512 بايت / 512 بايت
نوع تسمية القرص: dos
معرّف القرص: 0x0005c8ec

   الجهاز مخصص للتشغيل  البداية         النهاية      الكتل   Id  النظام
/dev/sda1   *        2048     1050623      524288   83  Linux
/dev/sda2         1050624    16777215     7863296   8e  Linux LVM
/dev/sdimage        16777216    41943039    12582912   8e  Linux LVM

القرص /dev/mapper/vg00-root: 19.9 جيجابايت، 19851640832 بايت، 38772736 قطاعًا
الوحدات = قطاعات بـ 1 * 512 = 512 بايت
حجم القطاع (المنطقي/الفيزيائي): 512 بايت / 512 بايت
حجم الإدخال/الإخراج (الحد الأدنى/المثالي): 512 بايت / 512 بايت


القرص /dev/mapper/vg00-swap: 1073 ميجابايت، 1073741824 بايت، 2097152 قطاعًا
الوحدات = قطاعات بـ 1 * 512 = 512 بايت
حجم القطاع (المنطقي/الفيزيائي): 512 بايت / 512 بايت
حجم الإدخال/الإخراج (الحد الأدنى/المثالي): 512 بايت / 512 بايت

==================== نهاية معلومات القرص ====================

==================== اختبار البريد ====================
لإجراء اختبار شامل، احصل على عنوان من http://www.mail-tester.com/
تم تخطي اختبار البريد.

==================== انتهى! ====================

  1. النواة قديمة جدًا هناك، هل يمكنك التشغيل على شيء أحدث قليلًا؟

  2. إصدار Docker قديم جدًا هناك، هل يمكنك التحديث إلى إصدار مدعوم؟

  3. أنت تشغل حاوية web_only، والتي ستستخدم ذاكرة أقل حتى من حاوية مستقلة. ومع ذلك، فأنت تشغل مجموعة من الإضافات المخصصة، والتي قد أو قد لا تقوم بتخصيص ذاكرة زائدة.

  4. تحقق من إعدادات تبديل الذاكرة (swapiness) في نظام التشغيل، فقد تكون منخفضة جدًا.

  5. عملية Unicorn قد انتهت. من الصعب معرفة السبب دون سجلات إضافية… هل تقوم إضافاتك المخصصة بطلبات لأنظمة خارجية بشكل متزامن؟ ربما يكون الأمر مجرد انتهاء مهلة الاتصال؟

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

@فالكو، شكرًا لك، سأزيد الذاكرة لهذا الأمر. أما فيما يتعلق بترقية النواة (kernel) و Docker، فسأتواصل مع فريق SE لاتخاذ القرار.
عيد ميلاد مجيد :dizzy: