Tenho uma instância Discourse recém-migrada em um novo servidor.
Estou recebendo o seguinte erro nos logs: PG::DiskFull (ERROR: não foi possível redimensionar o segmento de memória compartilhada "/PostgreSQL.1759815625" para 8388608 bytes: Sem espaço no dispositivo)
É estranho porque o servidor anterior (64 GB de RAM) não tinha esse problema e eu tinha estas configurações:
db_shared_buffers: "25632MB"
db_work_mem: "160MB"
No novo servidor (128 GB de RAM), não consigo aumentar acima dos padrões básicos (tentei triplicar os valores abaixo e recebo o mesmo erro PG DiskFull):
db_shared_buffers: "128MB"
db_work_mem: "40MB"
A máquina anterior tem o Docker 27.x instalado (instalado automaticamente pelo instalador do Discourse). A nova máquina instalou o docker.io conforme as instruções (portanto, 26.x). Tentei mudar para o Docker 27.x para ver se isso estava relacionado, mas não mudou nada. Ambos estão no branch Stable do Discourse, versão 3.3.2.
Parece que shm_size pode ser o principal culpado:
Embora eu não entenda por que não era um problema no servidor anterior e é no novo. A única outra diferença principal é que o servidor antigo usa Ubuntu 22.04 LTS e o novo servidor está no 24.04 LTS.
Eu também tentei isso, mas as alterações são sobrescritas quando o contêiner é iniciado novamente
Então, para dar seguimento caso outra pessoa enfrente este problema - o acima resolveu para mim. Não preciso mais editar o shm-size no launcher.
Isso foi encontrado após notar este aviso durante a reconstrução: AVISO O *overcommit* de memória deve estar habilitado! Sem ele, um salvamento em segundo plano ou replicação pode falhar em condições de pouca memória. Estando desabilitado, ele também pode causar falhas sem condição de pouca memória, veja https://github.com/jemalloc/jemalloc/issues/1328. Para corrigir este problema, adicione 'vm.overcommit_memory = 1' a /etc/sysctl.conf e então reinicie ou execute o comando 'sysctl vm.overcommit_memory=1' para que isso tenha efeito.