Setup fails: Cannot allocate memory

AI-generated summary

A user rsx reports a setup failure with Discourse due to a “Cannot allocate memory” error during PostgreSQL initialization, likely caused by high shared memory usage. The issue occurs on a 4GB RAM virtual machine with 758,840 kB of free memory (though over 3GB is cached). Stephen suggests checking system load, confirming the standard install was followed, and reviewing app.yml settings. rsx confirms only a small script runs, and after reducing db_shared_buffers from 1024MB to 512MB and rebuilding the app, the issue is resolved rsx.

Hi,

I’m new to discourse and tried to install it the very fist time. The first try even did not create the database and second after (deleting everything and starting from scratch) is again complaining:

2022-08-04 18:51:53.698 UTC [41] FATAL:  could not map anonymous shared memory: Cannot allocate memory
2022-08-04 18:51:53.698 UTC [41] HINT:  This error usually means that PostgreSQL's request for a shared memory segment exceeded available memory, swap space, or huge pages. To reduce the request size (currently 1125310464 bytes), reduce PostgreSQL's shared memory usage, perhaps by reducing shared_buffers or max_connections.

There is another error before (don’t know if relevant):

I, [2022-08-04T18:51:52.606862 #1]  INFO -- : > socat /dev/null UNIX-CONNECT:/shared/postgres_run/.s.PGSQL.5432 || exit 0 && echo postgres already running stop container ; exit 1
2022/08/04 18:51:52 socat[18] E connect(6, AF=1 "/shared/postgres_run/.s.PGSQL.5432", 36): No such file or directory

The machine is a virtual server (don’t know which technology) with 4 GB RAM and 138 GB free space.

Could find any suitable hint here. Hence, any idea how to fix?

TIA
Roland

Is this the only thing running within the VM?

What’s the result of cat /proc/meminfo | grep MemFree ?

Did you follow the Standard Install and run discourse-setup? It should tune the memory settings for the spec of the VM assuming it meets the minimum requirements.

What are db_shared_buffers, unicorn_workers and db_work_mem in your app.yml?

Yes (except one small perl script).

MemFree: 758840 kB

But more than 3 GB is for cache.

The latter without any changes.

db_shared_buffers: "1024MB"
no entry for unicorn_workers
#db_work_mem: "40MB"

If have changed db_shared_buffers to 512 MB and have rebuild the app:

./launcher rebuild app

That looks much better now.