当前位置: 首页 > news >正文

麒麟信创系统安装pgsql-15.4 报错 popen failure: Cannot allocate memory

[root@iZbp1jchymfq9318t02m5wZ pgsql]# docker-compose up
[+] Running 11/14
[+] Running 14/14⣿⣿⣿⣿⣿⣿⣿⣿⠀⣿⣿⣿⠀] Pulling                                                                                                             15.9✔ pgsql-15.4 Pulled                                                                                                                              42.5s ✔ 578acb154839 Pull complete                                                                                                                    7.9s ✔ 9abc159edb5f Pull complete                                                                                                                    8.0s ✔ b742e0d9e952 Pull complete                                                                                                                    8.2s ✔ 8d6c67b42441 Pull complete                                                                                                                    8.3s ✔ 4ddc08bac214 Pull complete                                                                                                                    8.7s ✔ cf5a0484b6d9 Pull complete                                                                                                                    8.8s ✔ 1b4a0642b63d Pull complete                                                                                                                    8.9s ✔ 2f2829f664a0 Pull complete                                                                                                                    9.0s ✔ 7877975bfbf0 Pull complete                                                                                                                   41.8s ✔ e4b736138f60 Pull complete                                                                                                                   41.9s ✔ 2ce63fdb79b4 Pull complete                                                                                                                   41.9s ✔ 5734338d16e4 Pull complete                                                                                                                   42.0s ✔ 0a84e9353ffb Pull complete                                                                                                                   42.1s 
[+] Running 1/1✔ Container pgsql-15.4  Created                                                                                                                   1.6s 
Attaching to pgsql-15.4
pgsql-15.4  | popen failure: Cannot allocate memory
pgsql-15.4  | initdb: error: program "postgres" is needed by initdb but was not found in the same directory as "/usr/lib/postgresql/15/bin/initdb"
pgsql-15.4 exited with code 1
pgsql-15.4  | popen failure: Cannot allocate memory
pgsql-15.4  | initdb: error: program "postgres" is needed by initdb but was not found in the same directory as "/usr/lib/postgresql/15/bin/initdb"
pgsql-15.4  | popen failure: Cannot allocate memory
pgsql-15.4  | initdb: error: program "postgres" is needed by initdb but was not found in the same directory as "/usr/lib/postgresql/15/bin/initdb"
pgsql-15.4  | popen failure: Cannot allocate memory
pgsql-15.4  | initdb: error: program "postgres" is needed by initdb but was not found in the same directory as "/usr/lib/postgresql/15/bin/initdb"
pgsql-15.4  | popen failure: Cannot allocate memory
pgsql-15.4  | initdb: error: program "postgres" is needed by initdb but was not found in the same directory as "/usr/lib/postgresql/15/bin/initdb"
pgsql-15.4  | popen failure: Cannot allocate memory
pgsql-15.4  | initdb: error: program "postgres" is needed by initdb but was not found in the same directory as "/usr/lib/postgresql/15/bin/initdb"
pgsql-15.4  | popen failure: Cannot allocate memory
pgsql-15.4  | initdb: error: program "postgres" is needed by initdb but was not found in the same directory as "/usr/lib/postgresql/15/bin/initdb"

1、创建诊断脚本

cat > diagnose_docker_postgres.sh << 'EOF'
#!/bin/bashecho "======================================"
echo "PostgreSQL Docker 问题诊断脚本"
echo "======================================"
echo ""# 1. 系统基本信息
echo "【1. 系统信息】"
echo "内核版本: $(uname -r)"
echo "系统版本: $(cat /etc/redhat-release 2>/dev/null || cat /etc/os-release | grep PRETTY_NAME)"
echo "CPU核心数: $(nproc)"
free -h
echo ""# 2. 内存相关参数
echo "【2. 内存相关内核参数】"
echo "overcommit_memory: $(cat /proc/sys/vm/overcommit_memory)"
echo "overcommit_ratio: $(cat /proc/sys/vm/overcommit_ratio)"
echo "max_map_count: $(cat /proc/sys/vm/max_map_count)"
echo "swappiness: $(cat /proc/sys/vm/swappiness)"
echo ""# 3. Docker 信息
echo "【3. Docker 信息】"
docker version
echo ""
docker info | grep -E "Storage Driver|Cgroup Driver|Cgroup Version|Operating System|Kernel Version"
echo ""# 4. 检查 cgroup 限制
echo "【4. Cgroup 限制检查】"
if [ -d /sys/fs/cgroup/memory/docker ]; thenecho "Memory cgroup 配置:"cat /sys/fs/cgroup/memory/docker/memory.limit_in_bytes 2>/dev/null || echo "无法读取"cat /sys/fs/cgroup/memory/docker/memory.memsw.limit_in_bytes 2>/dev/null || echo "无法读取"
fi
echo ""# 5. 检查 Docker 存储
echo "【5. Docker 存储空间】"
df -h | grep -E "Filesystem|/var/lib/docker|overlay"
echo ""
docker system df
echo ""# 6. 测试容器内存分配
echo "【6. 测试简单容器运行】"
echo "运行测试容器..."
docker run --rm alpine sh -c "echo '容器可以正常运行'; free -m" 2>&1
echo ""# 7. 测试 PostgreSQL 容器内部
echo "【7. 测试 PostgreSQL 镜像内部】"
echo "检查 postgres 程序是否存在..."
docker run --rm postgres:15.4 sh -c "ls -la /usr/lib/postgresql/15/bin/postgres 2>&1; which postgres 2>&1"
echo ""# 8. 测试内存限制的容器
echo "【8. 测试带内存限制的 PostgreSQL】"
echo "尝试以 512MB 内存限制运行..."
timeout 10 docker run --rm -m 512m \-e POSTGRES_PASSWORD=test123 \postgres:15.4 2>&1 | head -20
echo ""# 9. 检查 SELinux
echo "【9. SELinux 状态】"
getenforce 2>/dev/null || echo "SELinux 未安装"
echo ""# 10. 检查资源限制
echo "【10. 系统资源限制】"
ulimit -a
echo ""# 11. 检查 dmesg 错误
echo "【11. 最近的内核错误(OOM/内存相关)】"
dmesg | grep -i -E "out of memory|oom|kill|memory" | tail -20
echo ""# 12. 尝试修复建议
echo "======================================"
echo "【尝试以下修复方案】"
echo "======================================"
echo ""
echo "方案1: 调整内核参数"
echo "----------------------------------------"
echo "sudo sysctl -w vm.overcommit_memory=1"
echo "sudo sysctl -w vm.max_map_count=262144"
echo ""
echo "方案2: 修改 docker-compose.yml 添加配置"
echo "----------------------------------------"
cat << 'COMPOSE'
services:pgsql-15.4:container_name: pgsql-15.4image: postgres:15.4restart: alwaysports:- "5432:5432"environment:TZ: Asia/ShanghaiPOSTGRES_USER: pgvectorPOSTGRES_PASSWORD: bCK27cNKp4Ypafi75volumes:- ./data:/var/lib/postgresql/data# 添加以下配置shm_size: '256mb'security_opt:- seccomp:unconfinedtmpfs:- /tmp- /run
networks:default:external: truename: shgbitai-network
COMPOSE
echo ""
echo "方案3: 不使用 volume,测试是否是权限问题"
echo "----------------------------------------"
echo "docker run -d --name test-pg -e POSTGRES_PASSWORD=test123 postgres:15.4"
echo ""EOF

添加执行权限

chmod +x diagnose_docker_postgres.sh

运行诊断

bash./diagnose_docker_postgres.sh > diagnostic_report.txt 2>&1
cat diagnostic_report.txt

同时,立即尝试这个快速测试

# 测试1: 不挂载 volume,直接运行
echo "测试1: 不使用 volume"
docker run -d --name test-pg-no-volume \-e POSTGRES_PASSWORD=test123 \postgres:15.4sleep 5
docker logs test-pg-no-volume
docker rm -f test-pg-no-volumeecho ""
echo "================================"
echo ""# 测试2: 调整内核参数后运行
echo "测试2: 调整内核参数"
sysctl -w vm.overcommit_memory=1
sysctl -w vm.max_map_count=262144# 修改 docker-compose.yml
cat > docker-compose-test.yml << 'EOF'
services:pgsql-15.4:container_name: pgsql-15.4-testimage: postgres:15.4restart: "no"ports:- "5432:5432"environment:TZ: Asia/ShanghaiPOSTGRES_USER: pgvectorPOSTGRES_PASSWORD: bCK27cNKp4Ypafi75volumes:- ./data:/var/lib/postgresql/datashm_size: '256mb'security_opt:- seccomp:unconfined
networks:default:external: truename: shgbitai-network
EOF
docker-compose -f docker-compose-test.yml up
http://www.dtcms.com/a/521164.html

相关文章:

  • LeetCode 面试经典 150_链表_合并两个有序链表(58_21_C++_简单)
  • [优选算法专题四.前缀和——NO.31~32 连续数组、矩阵区域和]
  • 事业单位网站备案流程谷歌做不做网站
  • 做家居网站企业建设网站的目标
  • 福田网站改版安徽六安特产
  • XML 核心知识点
  • 图片类网站模板自己做网站是用什么软件
  • 全国通用工会考试真题及答案解析
  • 东莞寮步镇网站做网站需要自己研发吗
  • QLExpress 解析方程式
  • AI编程:结合MCP实现数据库连接与高效开发
  • 在线做网站有哪些平台wordpress二级
  • 怎样制作自己公司的网站企业在建设自己网站时
  • Flink DatastreamAPI详解(二)
  • 丢盖网logo设计免费官网合肥网站建设优化
  • Android View, SurfaceView, GLSurfaceView 的区别
  • 数据结构---优先级队列(堆)
  • PHP反序列化漏洞
  • dw做的网站怎么发布到网上wordpress wamp
  • 信用门户网站建设方案网站建设空间申请
  • RAG性能提升:从查询优化到范式演进的系统性路径
  • 响应式网站开发方法游戏官网平台
  • 网络管理员教程(初级)第六版--第4章 Web网站建设
  • 网站导入链接创建
  • 企业网站最重要的访问对象是Vantage wordpress主题
  • SpringBoot-数据访问之Druid
  • 算法 vs 社区:Pump 与 FourMeme 的增长机制之战
  • 「PPG信号处理——(2)脉搏波信号刺激前后RMSSD心率变异性研究」2025年10月23日
  • 学网站开发可以创业吗学校网站英文
  • 哈尔滨企业自助建站php做的网站手机能看到