Workerman多进程怎么配置?count参数设置多少合适?

秋静姑娘_4965

秋静姑娘_4965

2026-05-24

963人浏览

原创

$worker->count须在worker::runall()前设置且仅linux/macos有效;内存决定上限,io密集型建议cpu核数×3–5,cpu密集型设为核数或+1,混用场景需实测rss与%cpu动态调优。

workerman多进程怎么配置?count参数设置多少合适?

Workerman 的 $worker->count 不是设得越高越好,也不是简单乘个 2 就完事——它直接受限于内存、业务类型和内核参数,设错会 OOM 或空转。

怎么设置 $worker->count 才生效?

必须在 Worker::runAll() 调用前赋值,且仅 Linux/macOS 有效(Windows 不支持多进程)。常见错误是把 $worker->count = 8 写在 onWorkerStart 里,那完全没用。

  • 正确位置:Worker 实例创建后、Worker::runAll() 前
  • 典型写法:$worker = new Worker('http://0.0.0.0:8080'); $worker->count = 4;
  • 多个 Worker 实例要各自设,不能共用一个 count

$worker->count 设多少才不爆内存?

每个 Worker 进程常驻 RSS 内存约 30–60MB,取决于加载的类库、日志级别、中间件数量。别信“空进程才 5MB”这种说法——实测为准。

AVC.AI
AVC.AI

AVC.AI是一款提供图片和视频增强、修复、上色和抠图的在线 AI 工具平台。

下载
  • 快速估算公式:最大安全 count ≈ (总内存 MB) ÷ 单进程 RSS(MB) × 0.8
  • 例如:16GB 内存服务器,实测单 Worker RSS 为 48MB → 16 × 1024 ÷ 48 × 0.8 ≈ 273,那就别超 270
  • 压测时用 ps aux --sort=-%mem | grep php 看真实 RSS,不是 memory_get_usage()

不同业务类型对应的 count 推荐值

CPU 密集型和 IO 密集型的合理范围差一倍以上,混用场景更得靠实测判断倾向。

  • CPU 密集型(如图像处理、大量计算、协程异步 MySQL/Redis):count = CPU 物理核心数 或 +1
  • IO 密集型(如同步 mysqli 查询、file_get_contents、频繁 HTTP 调用):count = CPU 核数 × 3 ~ 5(4 核建议从 12 起压)
  • 混合型:先设 CPU 核数 × 2,再看 top 里各 PHP 进程的 %CPU 持续值 —— 若普遍低于 30%,说明 IO 等待多,可加;若长期 > 80% 且 Recv-Q 在 ss -lnt 中堆积,说明 CPU 已饱和,加也没用

为什么开了 $worker->reusePort = true 后 count 可以更小?

启用 reusePort 后,内核直接把新连接分发给空闲 Worker 进程,避免主进程 accept 队列争抢,减少锁竞争和上下文切换开销。

  • 前提:Linux 内核 ≥ 3.9(uname -r 查),PHP ≥ 7.0,且 stream_socket_server() 底层支持 SO_REUSEPORT
  • 效果:同配置下可比未开启时多撑 10–20% 连接,count 可往物理核数靠拢(如 8 核设 8~10,而非 16)
  • 验证是否生效:ss -lnt | grep :端口 看同一端口是否出现多行输出(每行对应一个 Worker 进程)

真正卡住性能的往往不是 count 数字本身,而是它背后暴露的瓶颈:内存不足时加进程只会更快 OOM,IO 阻塞时堆进程反而加剧 Recv-Q 积压。调参前务必先用 ss -lnt 和 ps aux 看清真实负载分布。

相关专题

更多
counta和count的区别
counta和count的区别

Count函数用于计算指定范围内数字的个数,而CountA函数用于计算指定范围内非空单元格的个数。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2023.11.20

2688

5

Workerman安装配置教程
Workerman安装配置教程

Workerman安装配置教程专题提供Workerman安装配置、WebSocket开发、TCP通信、异步编程、高并发服务搭建与PHP实时通信开发教程。

2026.05.20

166

15

Workerman实时通信与长连接开发教程
Workerman实时通信与长连接开发教程

WWorkerman实时通信与长连接开发教程聚合实时通信、聊天室、长连接、消息推送、AI流式输出等Workerman高并发开发内容。

2026.05.20

202

12

Workerman异步通信与TCP服务器开发
Workerman异步通信与TCP服务器开发

Workerman异步通信与TCP服务器开发专题整理Workerman异步通信、TCP服务、HTTP服务、WebSocket开发与高并发PHP服务器教程。

2026.05.20

187

13

LLVM自定义Pass怎么写
LLVM自定义Pass怎么写

本专题聚焦LLVM自定义Pass开发,整理Pass类结构、run()方法、PreservedAnalyses、CMake构建、插件注册、-load-pass-plugin加载和测试用例编写流程。

2026.09.30

60

10

LLVM RISC-V参数配置教程
LLVM RISC-V参数配置教程

本专题介绍LLVM对RISC-V基础ISA和扩展的支持方式,涵盖RV32、RV64、标准扩展、实验性扩展、厂商扩展、-menable-experimental-extensions和版本差异。

2026.09.30

40

14

LLVM IR中间表示入门指南
LLVM IR中间表示入门指南

本专题整理LLVM IR的核心概念,包括中间表示作用、模块结构、函数、基本块、SSA形式、类型系统和常见语法,帮助新手理解LLVM编译流程中的关键层。

2026.09.30

40

12

PDF转图片方法
PDF转图片方法

需要把 PDF 页面用于上传、预览、分享或图片归档时,PDF 转图片方法专题整理 JPG/PNG 格式选择、逐页导出、清晰度设置、批量下载和结果检查等流程,帮助用户稳定完成 PDF 图片化处理。

2026.09.30

40

26

PixTV AI视频生成与无限画布创作
PixTV AI视频生成与无限画布创作

PixTV专题整理AI视频与视觉内容创作相关功能使用教程,涵盖AI生图、视频生成、无限画布、多模型创作、素材管理、声音音乐及视频剪辑等功能,帮助用户快速掌握PixTV从创意到成片的完整制作方法。

2026.09.29

40

15

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Webman中文手册
Webman中文手册

共0课时 | 0人学习

Workerman官方手册
Workerman官方手册

共0课时 | 0人学习

ThinkPHP5.1完全开发手册
ThinkPHP5.1完全开发手册

共0课时 | 0人学习