Postgresql 安装pgstatspack无法启动

当尝试启动PostgreSQL并遇到'could not create shared memory segment'错误时,通常是因为请求的共享内存超过了内核的SHMMAX参数。解决方案包括通过sysctl调整kernel.shmmax和kernel.shmall的值,或者增大操作系统的共享内存段大小。确保这些设置在重启后能被保留,并参考PostgreSQL文档了解共享内存配置。

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

一、现象

 /usr/local/pgsql/bin/postmaster -D /usr/local/pgsql/data/
LOG:  loaded library "pg_stat_statements"
FATAL:  could not create shared memory segment: Invalid argument
DETAIL:  Failed system call was shmget(key=5432001, size=34381824, 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 34381824 bytes), reduce PostgreSQL's shared_buffers parameter (currently 3072) and/or its max_connections parameter (currently 254).
        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.
二、解决方法

   增大操作系统的共享内存段的大小

Linux
The default maximum segment size is 32 MB, which is only adequate for very small PostgreSQL
installations. The default maximum total size is 2097152 pages. A page is almost always 4096
bytes except in unusual kernel configurations with “huge pages” (use getconf PAGE_SIZE to
verify). That makes a default limit of 8 GB, which is often enough, but not always.
The shared memory size settings can be changed via the sysctl interface. For example, to allow
16 GB:
$ sysctl -w kernel.shmmax=17179869184
$ sysctl -w kernel.shmall=4194304

In addition these settings can be preserved between reboots in the file /etc/sysctl.conf.
Doing that is highly recommended.
Ancient distributions might not have the sysctl program, but equivalent changes can be made
by manipulating the /proc file system:
$ echo 17179869184 >/proc/sys/kernel/shmmax
$ echo 4194304 >/proc/sys/kernel/shmall

The remaining defaults are quite generously sized, and usually do not require changes.

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值