postgresql 启动报错

本文介绍了当PostgreSQL遇到共享内存创建失败的问题时的解决方法。主要原因是请求的共享内存大小超过了系统的SHMMAX参数限制。文章提供了两种解决方案:一是调整内核参数shmmax;二是减小PostgreSQL配置中的shared_buffers和max_connections参数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

FATAL: could not create shared memory segment: Invalid argument
DETAIL: Failed system call was shmget(key=5710001, size=278724608, 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 reque
st size or reconfigure the kernel with larger SHMMAX. To reduce the request size (currently 278724608 bytes), reduce PostgreSQL's shared_buffers parameter (cu
rrently 32768) and/or its max_connections parameter (currently 103).
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 reco
nfiguring SHMMIN is called for.
The PostgreSQL documentation contains more information about shared memory configuration.

解决办法:
1 我们可以修改shmmax内核参数,使SGA存在于一个共享内存段中。

  通过修改/proc/sys/kernel/shmmax参数可以达到此目的。

# echo 1073741824 > /proc/sys/kernel/shmmax

# more /proc/sys/kernel/shmmax

1073741824这里设为1G。

  对于shmmax文件的修改,系统重新启动后会复位。可以通过修改/etc/sysctl.conf使更改永久化。

  在该文件内添加以下一行 kernel.shmmax = 1073741824 这个更改在系统重新启动后生效.

2 修改postgresql.conf 里面 共享内存参数
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值