로그에서 다음과 같은 오류가 발생합니다: PG::DiskFull (ERROR: could not resize shared memory segment "/PostgreSQL.1759815625" to 8388608 bytes: No space left on device )
기존 서버(64GB RAM)에서는 이 문제가 없었는데, 당시 설정은 다음과 같았습니다:
db_shared_buffers: "25632MB"
db_work_mem: "160MB"
새 서버(128GB RAM)에서는 기본값 이상으로 높일 수 없습니다(아래 값을 3배로 올려봤지만 동일한 PG DiskFull 오류가 발생했습니다):
db_shared_buffers: "128MB"
db_work_mem: "40MB"
기존 머신에는 discourse 설치 프로그램으로 자동 설치된 docker 27.x가 설치되어 있습니다. 새 머신에는 지침에 따라 docker.io(26.x)를 설치했습니다. 관련이 있는지 확인하기 위해 docker 27.x로 전환해 보았지만 아무것도 바뀌지 않았습니다. 두 서버 모두 Stable Discourse 브랜치의 3.3.2 버전을 사용하고 있습니다.
shm_size가 주요 원인인 것 같습니다:
하지만 이전 서버에서는 문제가 없었는데 새 서버에서는 왜 문제가 되는지 모르겠습니다. 다른 주요 차이점은 기존 서버가 Ubuntu 22.04 LTS를 사용하고, 새 서버는 24.04 LTS를 사용한다는 것입니다.
혹시 다른 분들도 이 문제를 겪고 계실 수 있어 후속으로 공유드립니다. 위 방법으로 제 문제는 해결되었습니다. 이제 더 이상 launcher에서 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.