لا يمكن زيادة db_shared_buffers (0.1٪ من إجمالي الذاكرة العشوائية) و db_work_mem (0.03٪ من إجمالي الذاكرة العشوائية)

هذا أمر محير بعض الشيء :upside_down_face:

لدي نسخة Discourse تم ترحيلها حديثًا على خادم جديد.

أتلقى الخطأ في السجلات: PG::DiskFull (ERROR: could not resize shared memory segment \"/PostgreSQL.1759815625\" to 8388608 bytes: No space left on device )

إنه غريب، لأن الخادم السابق (64 جيجابايت من ذاكرة الوصول العشوائي) لم يكن لديه هذه المشكلة وكان لدي الإعدادات التالية:

db_shared_buffers: "25632MB"
db_work_mem: "160MB"

على الخادم الجديد (128 جيجابايت من ذاكرة الوصول العشوائي)، لا يمكنني الزيادة فوق الإعدادات الافتراضية الأساسية (حاولت مضاعفة القيم أدناه ثلاث مرات وأحصل على نفس خطأ PG DiskFull):

db_shared_buffers: "128MB"
db_work_mem: "40MB"

الجهاز السابق لديه Docker 27.x عليه (تم تثبيته تلقائيًا عبر مثبت Discourse). الجهاز الجديد قام بتثبيت docker.io حسب التعليمات (لذلك 26.x). حاولت التبديل إلى Docker 27.x لمعرفة ما إذا كان هذا هو السبب - لكنه لم يغير شيئًا. كلاهما على فرع Discourse المستقر، الإصدار 3.3.2.

يبدو أن shm_size قد يكون السبب الرئيسي:

على الرغم من أنني لا أعرف لماذا لم تكن مشكلة على الخادم السابق وهي كذلك على الخادم الجديد. الاختلاف الرئيسي الآخر هو أن الخادم القديم يستخدم Ubuntu 22.04 LTS والخادم الجديد يستخدم 24.04 LTS.

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

يبدو أن shm_size مبرمج بشكل ثابت في المشغل:

أي رؤى أو مساعدة ستكون موضع تقدير! :meow_heart:

يشير إلى مساحة القرص الصلب، وليس ذاكرة الوصول العشوائي.

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

شكرًا @pfaffman - اعتقدت ذلك في البداية أيضًا، لكنني قرأت هذا الموضوع بعد ذلك:

هناك الكثير من المساحة الخالية أيضًا :confused:

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

لذا فإن الإصلاح السريع بشريط لاصق هو ببساطة تحرير ملف المشغل مثل:

cd /var/discourse
vi launcher

ثم استبدل جميع التكرارات الثلاثة لـ
--shm-size=512m
بمقدار ذاكرة الوصول العشوائي المطلوب (لقد اخترت 50٪ من ذاكرة النظام).

ثم أعد البناء. ستحتاج إلى تحريره مرة أخرى في كل مرة يتم فيها تحديث المشغل.

يبدو أنه يقوم بالمهمة في الوقت الحالي.

water leaking fix with flex tape

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

لذا للمتابعة في حال واجه شخص آخر هذه المشكلة - الحل أعلاه حلها بالنسبة لي. لم أعد بحاجة إلى تعديل shm-size في المشغل.

تم العثور على هذا بعد ملاحظة هذا التحذير أثناء إعادة البناء:
تحذير يجب تمكين تجاوز تخصيص الذاكرة! بدون ذلك، قد يفشل الحفظ في الخلفية أو النسخ المتماثل في ظل ظروف الذاكرة المنخفضة. وبما أنه معطل، يمكن أن يتسبب أيضًا في فشل دون ظروف الذاكرة المنخفضة، انظر https://github.com/jemalloc/jemalloc/issues/1328. لإصلاح هذه المشكلة أضف 'vm.overcommit_memory = 1' إلى /etc/sysctl.conf ثم أعد التشغيل أو قم بتشغيل الأمر 'sysctl vm.overcommit_memory=1' لتفعيل ذلك.

إعجابَين (2)