postgresql - 在 MAC OS X 10.6 上为 PostgreSQL 设置 SHMMAX 等值

标签 postgresql configuration macos

我正在尝试在我的本地机器上启动我的 PostgreSQL 服务器。 但是我收到一条错误消息:

FATAL:  could not create shared memory segment: Invalid argument
DETAIL:  Failed system call was shmget(key=5432001, size=9781248, 03600).
HINT:  This error usually means that PostgreSQL's request for a shared memory segment exceeded your kernel's SHMMAX parameter.  You can either reduce the request size or reconfigure the kernel with larger SHMMAX.  To reduce the request size (currently 9781248 bytes), reduce PostgreSQL's shared_buffers parameter (currently 1024) and/or its max_connections parameter (currently 13).
If the request size is already small, it's possible that it is less than your kernel's SHMMIN parameter, in which case raising the request size or reconfiguring SHMMIN is called for.
The PostgreSQL documentation contains more information about shared memory configuration.  

我搜索并查看了文档,但我尝试设置 kern.sysv.shmmax 和 kern.sysv.shmall 的所有操作都有效。 Snow Leopard 上的正确设置是什么?我用 macports 安装了 postgres。

最佳答案

您必须将内核的最大共享内存允许量增加到高于 Postgres 试图分配的值。 (您还可以减少 postgresql.conf 中的共享缓冲区或最大连接数设置,以使 Postgres 请求更少的内存,但对于大多数用例而言,默认值已经相当小了。)

一次性执行此操作,持续到下一次重启:

sudo sysctl -w kern.sysv.shmmax=12582912
sudo sysctl -w kern.sysv.shmall=12582912

根据您的 Postgres 设置更改确切的数字;它必须大于 Postgres 在日志文件中要求的任何内容。完成这两项操作后,您应该能够启动 Postgres。

要使更改在重新启动后持续存在,请编辑/etc/sysctl.conf 并在其中设置相同的值。

关于postgresql - 在 MAC OS X 10.6 上为 PostgreSQL 设置 SHMMAX 等值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2017004/

相关文章:

WCF 绑定(bind)配置仅作为默认应用,但命名失败

android - 编译 irrlicht 时出错 - android 端口 (Mac OSX)

python - 以编程方式在 Python 中提示时输入密码?

macos - 当 mouseDown 和 mouseUp 时重绘 NSButton

postgresql - sequelize(v 4.3.0) 中的关联与自定义主键

sql - 如何在 SQL 中计算 1 个字段中每个条件的 SUM?

json - PostgreSQL:将数据从json插入表

MYSQL:从命令行检查正在使用的数据文件

python-3.x - 连接超时——使用sqlalchemy访问AWS usaspending数据

java - Spring Security Java 配置问题