首页/云/Docker 容器速查/compose shm_size 调整共享内存
Compose 编排55 条

compose shm_size 调整共享内存

调整容器 /dev/shm 大小:默认为 64MB,浏览器内核、PostgreSQL 并行查询等场景需要调大,否则会因共享内存不足异常退出。

Docker 容器速查云更新于 2026-10-13

共享内存不够会直接崩

容器内的 /dev/shm 默认只有 64MB,浏览器内核、数据库的并行查询与图像处理都会大量使用共享内存。空间不足时通常不是返回一个清晰的错误,而是渲染进程或查询进程直接异常退出,日志里往往只有一条与共享内存相关的提示。compose 里用 shm_size 调整大小,对应命令行参数是 --shm-size,单位可以用 mb、gb 或直接写字节数。

基本信息

字段shm_size: 1gb 或 536870912 形式
默认值64MB
命令行对应docker run --shm-size=1g
计费方式共享内存计入容器内存用量,受内存限制约束

典型使用场景

  • 浏览器自动化:无头浏览器渲染大页面时频繁崩溃,先看 /dev/shm 大小
  • 数据库并行:查询并发高时出现共享内存分配失败
  • 图像与视频处理:大帧缓冲需要更多共享内存
  • 压测前的容量核对:把共享内存的额外开销算进容器内存预算
  • 崩溃分析:进程异常退出但日志无异常的,检查共享内存是否撞到上限

配置与验证

配置与验证
services:
  chrome:
    image: selenium/standalone-chrome
    shm_size: 1gb          # 无头浏览器常见配置
  db:
    image: postgres:16-alpine
    shm_size: 256m         # 并行查询需要的共享内存

# 验证容器内实际大小
# docker exec chrome df -h /dev/shm

按服务类型取值

服务类型典型需求建议起点
无头浏览器页面渲染需要较大共享内存1gb 起,按并发数上调
数据库并行查询与哈希聚合256m 起,结合并发度调整
图像与视频处理大尺寸帧缓冲按单帧大小乘并发估算
普通业务服务几乎没有共享内存需求保持默认,避免浪费内存预算
共享内存算在容器内存额度里,设置内存上限时要把这块一起算进去,否则会出现内存超限被杀的连带问题。
另一种常见做法是把共享内存目录改为内存态挂载,效果类似但语义不同;用 shm_size 更直接,也更容易在编排文件里统一管理。

易错点

  • 页面崩溃只看应用日志:共享内存不足的错误往往不明显,先量一下 /dev/shm 的实际大小
  • 调大共享内存不看内存上限:容器总内存开销同步上升,资源紧张的节点要重新核对限制
  • 每台机器手工加参数:配置没有沉淀到编排文件,重建后又回到默认值
  • 把这个值往大里设:共享内存占用的是真实内存,过量设置会在高并发时放大内存压力

数据来源与参考

  • Docker 官方文档:Compose shm_size(docs.docker.com)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌