全部学科
Python全栈
python
NodeJS全栈
nodejs
📅 2026-05-21 5 分钟 ✍️ juanwangdev

进程数与 PID 限制

Fork 炸弹可耗尽宿主进程资源,下面介绍容器进程数限制方法。

--pids-limit 参数

Bash
# 限制容器最多 100 个进程
docker run -d --pids-limit=100 my-app

# 不限制(默认,不推荐)
docker run -d --pids-limit=-1 my-app

--pids-limit 限制容器可创建的进程数,防止 Fork 炸弹攻击。

Fork 炸弹示例

Bash
# 危险的 Fork 炸弹(不要执行!)
:(){ :|:& };:

# 无限创建进程,耗尽 PID 资源
# 导致系统无法创建新进程

Compose 配置

YAML
version: '3.8'

services:
  app:
    image: my-app
    deploy:
      resources:
        limits:
          pids: 100

查看进程数

Bash
# 查看容器进程
docker top my-app

# 统计进程数
docker top my-app | wc -l

# 查看容器 PID 限制
docker inspect my-app | grep "PidsLimit"

# 输出
"PidsLimit": 100

更新限制

Bash
# 运行时更新
docker update --pids-limit=200 my-app

推荐配置

场景推荐限制
Web 服务50-100
Worker20-50
数据库100-200
开发容器200-500

进程监控

Bash
# 查看容器进程树
docker exec my-app ps auxf

# 查看进程限制
docker exec my-app cat /sys/fs/cgroup/pids/pids.max

# 输出
100

要点总结

  • --pids-limit 限制容器进程数,防止 Fork 炸弹
  • 生产环境建议设置 50-200,根据应用类型调整
  • Compose 通过 deploy.resources.limits.pids 配置
  • docker top 查看容器进程,docker inspect 查看限制
  • 运行时可 docker update 修改限制
想在手机上练习这篇文章的配套题目?
使用微信卷王开发者小程序,打开首页顶部扫码功能识别二维码
← 上一篇 内存限制与 OOM
下一篇 → 资源监控与统计
扫码体验小程序
加载中
想在手机上刷题学习?
使用微信卷王开发者小程序,打开首页顶部扫码功能识别二维码