You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Docker环境中调整max_locks_per_transaction解决共享内存不足

解决PostgreSQL "out of shared memory" 错误的配置方法

方法1:通过启动命令直接设置参数

在你的docker-compose.yml中补全postgres服务配置,并通过启动命令指定max_locks_per_transaction参数(默认值为64,可按需上调):

version: '2.4'

services:
    node-app:
        container_name: node-app
        environment:
            NODE_ENV: '${NODE_ENV}'
            PORT: 8080
            HOST: '${HOST}'
            DB_NAME: '${DB_NAME}'
            TEST_DB_NAME: '${TEST_DB_NAME}'
            DB_USERNAME: '${DB_USERNAME}'
            DB_PASSWORD: '${DB_PASSWORD}'
            DB_HOST: '${DB_HOST}'
        ports:
            - '80:8080'
        restart: always
        mem_limit: '3072M'
        volumes:
            - /tmp:/home/node/app/secrets
            - '${EB_LOG_BASE_DIR}/node-app:/home/node/app/logs'

    pgadmin:
        image: 'dpage/pgadmin4:5.6'
        environment:
            PGADMIN_DEFAULT_EMAIL: 'root@example.com'
            PGADMIN_DEFAULT_PASSWORD: 'root'
        volumes:
            - pgadmin:/var/lib/pgadmin
        ports:
            - '5050:80'
        restart: unless-stopped

    postgres:
        image: postgres:13.4-alpine
        container_name: postges_1
        environment:
            POSTGRES_USER: ${DB_USERNAME}
            POSTGRES_PASSWORD: ${DB_PASSWORD}
            POSTGRES_DB: ${DB_NAME}
        volumes:
            - postgres-data:/var/lib/postgresql/data
        command: postgres -c max_locks_per_transaction=256
        restart: always

volumes:
    pgadmin:
    postgres-data:

方法2:挂载自定义配置文件(适合多参数修改)

如果需要同时调整多个PostgreSQL参数,推荐使用自定义配置文件:

  1. 本地创建postgresql.conf文件,添加参数配置:
max_locks_per_transaction = 256
# 其他需要修改的参数可在此添加
  1. 修改docker-compose.yml中的postgres服务,挂载配置文件并指定加载路径:
# ... 其他服务配置保持不变
postgres:
    image: postgres:13.4-alpine
    container_name: postges_1
    environment:
        POSTGRES_USER: ${DB_USERNAME}
        POSTGRES_PASSWORD: ${DB_PASSWORD}
        POSTGRES_DB: ${DB_NAME}
    volumes:
        - ./postgresql.conf:/var/lib/postgresql/data/postgresql.conf
        - postgres-data:/var/lib/postgresql/data
    command: postgres -c config_file=/var/lib/postgresql/data/postgresql.conf
    restart: always

后续操作

  • 修改配置后,重启postgres容器生效:docker-compose restart postgres
  • 可根据实际报错情况逐步调整max_locks_per_transaction数值(如128、256、512),避免设置过大占用过多内存

内容的提问来源于stack exchange,提问作者user10596155

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 03:05:30