首页 > 数据库 >PostgreSQL启动报错“could not map anonymous shared memory: Cannot allocate memory”

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

时间:2024-06-02 14:04:42浏览次数:17  
标签:map 06 PDT 2024 报错 pg memory shared

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

报错

[pg16@test ~]$ pg_ctl start
waiting for server to start....2024-06-01 22:20:02.156 PDT [68668] DEBUG:  registering background worker "logical replication launcher"
2024-06-01 22:20:02.157 PDT [68668] DEBUG:  loaded library "pg_stat_statements"
2024-06-01 22:20:02.157 PDT [68668] FATAL:  could not map anonymous shared memory: Cannot allocate memory
2024-06-01 22:20:02.157 PDT [68668] 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 [68668] 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)。

分析记录

[pg16@test ~]$ 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)
[pg16@test ~]$ 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可以正常启动。

解决

[pg16@test log]$ pg_ctl start
waiting for server to start....2024-06-02 06:43:45.043 PDT [3636] DEBUG:  registering background worker "logical replication launcher"
2024-06-02 06:43:45.043 PDT [3636] DEBUG:  loaded library "pg_stat_statements"
2024-06-02 06:43:45.051 PDT [3636] LOG:  redirecting log output to logging collector process
2024-06-02 06:43:45.051 PDT [3636] HINT:  Future log output will appear in directory "log".
 done
server started

谨记:心存敬畏,行有所止。

标签:map,06,PDT,2024,报错,pg,memory,shared
From: https://blog.csdn.net/lee_vincent1/article/details/139390242

相关文章

  • MapStruct高级用法
    MapStruct高级用法依赖注入(Usingdependencyinjection)@Mapper(componentModel=SPRING)publicinterfaceSpringMapper{SpringMapperMAPPER=Mappers.getMapper(SpringMapper.class);PersonDTOpersonDoToDTO(Personperson);}publicstaticfinalc......
  • 【JAVA】快速遍历map集合
    1.使用entrySet()方法【推荐】2.直接使用values()方法获取所有value值组成的集合3.使用keySet()方法和getValue方法4.使用迭代器iterator5.使用增强for的Lambda表达式......
  • 【Python】解决Python报错:AttributeError: ‘str‘ object has no attribute ‘xxx‘
    ......
  • 初学者springboot启动报错Caused by: java.lang.IllegalArgumentException: Invalid v
    本人第一次接触springboot框架本来想用mybatis连接数据库,引入mybatisplus配置就启动报错packagecom.hu.springboot_mybatis.dao;importcom.baomidou.mybatisplus.core.mapper.BaseMapper;importcom.hu.springboot_mybatis.pojo.UserPojo;importorg.apache.ibatis.ann......
  • python画图报错:OSError: 'seaborn-whitegrid' is not a valid package style
    解决方法:https://stackoverflow.com/questions/78019854/matplotlib-seaborn-whitegrid-is-not-a-valid-package-style?newreg=7ee17d6cd10c4182b08284391596644b代码:importmatplotlib.pyplotaspltplt.style.available效果:这个问题说明对应的样式package不存在,查......
  • 报错信息:Unable to make field private final java.lang.Class java.lang.invoke.Seri
    jdk版本与当前MyBatisPlus版本不兼容解决方法:1.升级MyBatisPlus的版本。2.或者使用以下方法--add-opensjava.base/java.lang.invoke=ALL-UNNAMED......
  • 报错信息:Invalid bound statement (not found): org.example.mapper.UserMapper.selec
    分析出现错误的原因:使用package标签加载映射sql文件,要求需要Mapper接口名称需要和映射文件相同,并且在同一个目录中。由图可见,三个位置目录及名称都一致,但是运行还是报错。经过一番折磨,最后在windows系统文件中发现我在idea里建的多层文件夹其实是一个文件夹在idea创建Direct......
  • 【问题解决】MySQL恢复数据库报错Unknown command '\''.
    问题使用以下命令备份恢复数据库,恢复失败提示ERRORatline39595:Unknowncommand'\''.#备份数据库mysqldump-uusername-p--no-create-db-Rdatabasename>dump.sql#恢复数据库mysql-uusername-pdatabasename2<dump.sql问题原因及解法原因:中文字符的问题......
  • SpringMVC:@RequestMapping注解
    1.@RequestMapping作用@RequestMapping`注解是SpringMVC框架中的一个控制器映射注解,用于将请求映射到相应的处理方法上。具体来说,它可以将指定URL的请求绑定到一个特定的方法或类上,从而实现对请求的处理和响应。2. 出现位置的区别出现在类上//@RequestMapping注......
  • MapReduce学习之MapJoin案例实现
    MapReduce学习之MapJoin案例实现1.当前main方法所在的入口类packagecom.shujia.mr.mapJoin;importcom.shujia.mr.reduceJoin.ReduceJoin;importcom.shujia.mr.reduceJoin.ReduceJoinMapper;importcom.shujia.mr.reduceJoin.ReduceJoinReducer;importorg.apache.......