设置失败:无法分配内存

您好,

我是 Discourse 的新手,这是我第一次尝试安装。第一次尝试甚至没有创建数据库,第二次(删除所有内容并从头开始)后又出现以下错误:

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.

之前还有另一个错误(不知道是否相关):

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

这台机器是一台虚拟机(不知道是哪种技术),拥有 4 GB RAM 和 138 GB 免费空间。

在这里找不到任何合适的提示。因此,有什么办法可以解决吗?

提前感谢!
Roland

1 个赞

这是虚拟机中运行的唯一东西吗?

cat /proc/meminfo | grep MemFree 的结果是什么?

您是否遵循了标准安装并运行了 discourse-setup?它应该会根据虚拟机的规格调整内存设置,前提是它满足最低要求。

您的 app.yml 中的 db_shared_buffersunicorn_workersdb_work_mem 是什么?

1 个赞

是的(除了一个小的 Perl 脚本)。

MemFree: 758840 kB

但是有超过 3 GB 用于缓存。

后者没有做任何更改。

db_shared_buffers: "1024MB"
没有 unicorn_workers 条目
#db_work_mem: "40MB"
1 个赞

如果已将 db_shared_buffers 更改为 512 MB 并已重新构建应用程序:
./launcher rebuild app

现在看起来好多了。

1 个赞