Не удается увеличить 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 зашит намертво в загрузчик (launcher):

Буду признателен за любые советы или помощь! :meow_heart:

Это относится к месту на жестком диске, а не к оперативной памяти.

Спасибо @pfaffman — я тоже сначала так подумал, но потом прочитал эту тему:

Свободного места тоже много :confused:

Итак, быстрое решение с помощью изоленты — просто отредактировать файл лаунчера так:

cd /var/discourse
vi launcher

Затем замените все 3 вхождения
--shm-size=512m
на нужный объем оперативной памяти (я выбрал 50% от системной памяти).

После этого выполните пересборку. При каждом обновлении лаунчера файл придется редактировать снова.

Пока что это работает.

water leaking fix with flex tape

Таким образом, чтобы подытожить на случай, если кто-то другой столкнётся с этой проблемой, — вышеуказанные действия решили её для меня. Мне больше не нужно редактировать shm-size в запускателе.

Это было обнаружено после появления следующего предупреждения во время пересборки:
WARNING Memory overcommit must be enabled! Without it, a background save or replication may fail under low memory condition. Being disabled, it can can also cause failures without low memory condition, see https://github.com/jemalloc/jemalloc/issues/1328. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.