东湖之滨 发表于 2024-6-14 22:47:58

PostgreSQL启动报错“could not map anonymous shared memory: Cannot allo

PostgreSQL启动报错“could not map anonymous shared memory: Cannot allocate memory”

基础信息
OS版本:Red Hat Enterprise Linux Server release 7.9 (Maipo)
DB版本:16.2
pg软件目录:/home/pg16/soft
pg数据目录:/home/pg16/data
端口:5777
报错

$ pg_ctl start
waiting for server to start....2024-06-01 22:20:02.156 PDT DEBUG:registering background worker "logical replication launcher"
2024-06-01 22:20:02.157 PDT DEBUG:loaded library "pg_stat_statements"
2024-06-01 22:20:02.157 PDT FATAL:could not map anonymous shared memory: Cannot allocate memory
2024-06-01 22:20:02.157 PDT 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 295698432 bytes), reduce PostgreSQL's shared memory usage, perhaps by reducing shared_buffers or max_connections.
2024-06-01 22:20:02.157 PDT LOG:database system is shut down
stopped waiting
pg_ctl: could not start server
Examine the log output.
PostgreSQL 请求的共享内存段超出了当前可用的内存、互换空间或大页内存 (huge pages)。当前请求的内存大小为 295,698,432 字节(约 282 MB)。
分析记载

$ cat data/postgresql.conf |grep shared
shared_buffers = 256MB                  # min 128kB
#shared_memory_type = mmap            # the default is the first option
dynamic_shared_memory_type = posix      # the default is usually the first option
#min_dynamic_shared_memory = 0MB      # (change requires restart)
#wal_buffers = -1                     # min 32kB, -1 sets based on shared_buffers
shared_preload_libraries = 'pg_stat_kcache,pg_stat_statements,auto_explain'   # (change requires restart)
$ cat /proc/meminfo |grep Huge
AnonHugePages:    942080 kB
HugePages_Total:   150
HugePages_Free:      7
HugePages_Rsvd:      0
HugePages_Surp:      0
Hugepagesize:       2048 kB
发现空闲的大页只有7个,不满足pg的启动需求,故报错。最终发现是别的数据库进程占用了,停了之后pg可以正常启动。
解决

$ pg_ctl start
waiting for server to start....2024-06-02 06:43:45.043 PDT DEBUG:registering background worker "logical replication launcher"
2024-06-02 06:43:45.043 PDT DEBUG:loaded library "pg_stat_statements"
2024-06-02 06:43:45.051 PDT LOG:redirecting log output to logging collector process
2024-06-02 06:43:45.051 PDT HINT:Future log output will appear in directory "log".
done
server started
服膺:心存敬畏,行有所止。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: PostgreSQL启动报错“could not map anonymous shared memory: Cannot allo