启动时报一下错误:
20210929:14:24:06:008555 gpstart:tcloud:gpadmin-[INFO]: -Starting Master instance tcloud directory /home/greenplum/gpdata/master/gpseg-1 20210929:14:24:08:008555 gpstart:tcloud:gpadmin-[CRITICAL]:-Error occurred: non-zero rc: 1 Command was: 'env GPSESSID=0000000000 GPERA=10738c01b86c1f89_210929142350 $GPHOME/bin/pg_ctl -D /home/greenplum/gpdata/master/gpseg-1 -l /home/greenplum/gpdata/master/gpseg-1/pg_log/startup.log -w -t 600 -o " -p 2345 -E " start' rc=1, stdout='waiting for server to start.... stopped waiting ', stderr='pg_ctl: could not start server Examine the log output. '
查询报错日志:
# 读取报错日志 [gpadmin@tcloud pg_log]$ cat /home/greenplum/gpdata/master/gpseg-1/pg_log/startup.log # 以下是报错的详细信息 2021-09-29 14:23:50.116208 CST,,,p8565,th276797568,,,,0,,,seg-1,,,,,"LOG","00000","registering background worker ""sweeper process""",,,,,,,,"RegisterBackgroundWorker","bgworker.c",774, 2021-09-29 14:23:50.249829 CST,,,p8565,th276797568,,,,0,,,seg-1,,,,,"LOG","00000","redirecting log output to logging collector process",,"Future log output will appear in directory ""pg_log"".",,,,,,"SysLogger_Start","syslogger.c",989, 2021-09-29 14:24:06.500708 CST,,,p8695,th814495872,,,,0,,,seg-1,,,,,"LOG","00000","registering background worker ""ftsprobe process""",,,,,,,,"RegisterBackgroundWorker","bgworker.c",774, 2021-09-29 14:24:06.500992 CST,,,p8695,th814495872,,,,0,,,seg-1,,,,,"LOG","00000","registering background worker ""dtx recovery process""",,,,,,,,"RegisterBackgroundWorker","bgworker.c",774, 2021-09-29 14:24:06.501225 CST,,,p8695,th814495872,,,,0,,,seg-1,,,,,"LOG","00000","registering background worker ""sweeper process""",,,,,,,,"RegisterBackgroundWorker","bgworker.c",774, 2021-09-29 14:24:06.524429 CST,,,p8695,th814495872,,,,0,,,seg-1,,,,,"FATAL","XX000","could not map anonymous shared memory: Cannot allocate memory",,"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 234802044 bytes), reduce PostgreSQL's shared memory usage, perhaps by reducing shared_buffers or max_connections.",,,,,,"CreateAnonymousSegment","pg_shmem.c",587,1 0xbf0dac postgres errstart (elog.c:557) 2 0x9fd25e postgres PGSharedMemoryCreate (pg_shmem.c:578) 3 0xa5fe2c postgres CreateSharedMemoryAndSemaphores (ipci.c:214) 4 0xa10d6b postgres PostmasterMain (postmaster.c:1337) 5 0x6b5f21 postgres main (main.c:205) 6 0x7f022d49d555 libc.so.6 __libc_start_main + 0xf5 7 0x6c1c7c postgres2. 问题处理+ 0x6c1c7c # 重点 "FATAL","XX000","could not map anonymous shared memory: Cannot allocate memory"
对共享内存段的请求超出了可用内存【也就是内存不足】给出的解决办法是:减少请求大小(当前为234802044字节),也可以通过减少 shared_buffers 或 max_connections 来减少 PostgreSQL 的共享内存使用。
- 方法一【释放内存】
# 首先读取 /proc/sys/vm/drop_caches 的值【默认为0】 cat /proc/sys/vm/drop_caches 0 # 手动执行sync命令 # 描述:sync 命令运行 sync 子例程。如果必须停止系统,则运行sync 命令以确保文件系统的完整性。 # sync 命令将所有未写的系统缓冲区写到磁盘中,包含已修改的 i-node、已延迟的块 I/O 和读写映射文件。 sync # 将 /proc/sys/vm/drop_caches 值设为 3 echo 3 > /proc/sys/vm/drop_caches cat /proc/sys/vm/drop_caches 3
- 方法二【这个要慎重 内存小的就杀掉不必要的程序】
vim /etc/sysctl.conf # 添加 vm.overcommit_memory = 2 # 使修改生效 sysctl -p
- 0 — 默认设置。内核执行启发式内存过量使用处理,方法是估算可用内存量,并拒绝明显无效的请求。遗憾的是因为内存是使用启发式而非准确算法计算进行部署,这个设置有时可能会造成系统中的可用内存超载。
- 1 — 内核执行无内存过量使用处理。使用这个设置会增大内存超载的可能性,但也可以增强大量使用内存任务的性能。
- 2 — 内存拒绝等于或者大于总可用 swap 大小以及 overcommit_ratio 指定的物理 RAM 比例的内存请求。如果您希望减小内存过度使用的风险,这个设置就是最好的。


![【Linux部署-问题】Greenplum数据库6.13.0单机版 [CRITICAL]:-Error occurred: non-zero rc: 1(报错详情+问题处理) 【Linux部署-问题】Greenplum数据库6.13.0单机版 [CRITICAL]:-Error occurred: non-zero rc: 1(报错详情+问题处理)](http://www.mshxw.com/aiimages/31/279776.png)
