Workerman多进程count设置多少才合适性能好

轻辰君_4225

轻辰君_4225

2026-08-07

831人浏览

原创

webman/workerman的$worker->count必须按业务类型(io/cpu/混合)、实测rss内存、服务器资源三者联动设定:io密集型建议cpu核数×3–5,cpu密集型设为核数或+1,混合型先设×2再压测调优;硬上限公式为(总内存gb×1024÷单进程rss mb)×0.8并向下取整。

workerman多进程count设置多少才合适性能好

Workerman多进程count设置直接影响服务并发能力与稳定性,设低了连接排队、CPU空转,设高了内存溢出、上下文切换频繁——必须按业务类型、实测内存、服务器资源三者联动调整,不能套用固定倍数。

先判断你的业务属于哪一类

阻塞调用多(如mysqli_query、file_get_contents、curl_exec未设超时)→ IO密集型;纯计算、图像压缩、加密解密等不等外部响应→ CPU密集型;混合场景(比如查库+计算+调API)→ 优先按IO密集型起步,再根据监控调。

关键看代码里有没有【同步阻塞IO调用】:只要存在一个未封装为异步的MySQL查询或HTTP请求,整个Worker就卡住,此时必须按IO密集型配置count。

按类型设定初始count值

方法一:IO密集型(含数据库/Redis/HTTP调用)

第一步:获取CPU逻辑核心数,执行nproc命令,假设返回4;

第二步:从cpu_count × 3起步,即设为12;

第三步:启动服务后,立即执行ps aux --sort=-%mem | grep php | head -n 5,抓取5个Worker进程的RSS列,取平均值(单位KB),转换为MB;

这一步漏掉就容易OOM——别信“空进程只占20MB”,加载了Eloquent、Redis扩展、日志中间件后,实测常达45–68MB。

方法二:CPU密集型(无外部IO,纯PHP运算)

Codex Bridge
Codex Bridge

一款AI工具,主要用于将编码任务调度到本地 OpenAI Codex CLI,支持后台执行、状态轮询以及可交互式回答的澄清问题。适用于 OpenClaw 需要……,适合需要提升相关任务效率的用户。

下载

直接设为CPU核心数或+1,4核机器设4或5即可;再多只会加剧调度开销,QPS反而下降。

方法三:混合型(推荐先用此法探路)

设为cpu_count × 2,例如4核设8;运行10分钟后,用top观察各php进程%CPU是否持续高于70%,且vmstat 1 5中cs(context switch)值稳定在500以下;满足则保留,否则按IO密集型上调。

算出内存硬上限再截断

公式:【最大安全count ≈ (总内存GB × 1024) ÷ 单Worker平均RSS(MB) × 0.8】,结果向下取整。

例如:16GB内存服务器,实测单Worker RSS为52MB → 16 × 1024 ÷ 52 × 0.8 ≈ 252 → 最大设252,但实际建议留余量,设220以内。

注意:这个数是理论顶格,不是推荐值。压测时若QPS不再上升、或netstat -s | grep "packet receive errors"开始增长,说明已触达内核瓶颈,必须同步调net.core.somaxconn等参数,不能只加count。

启用reusePort是否能多开几个?

可以微调提升,但有前提:Linux内核≥3.9、PHP≥7.0、且stream_socket_server()底层支持SO_REUSEPORT(低版本PHP会静默忽略)。

开启后,原设24可试28,但【若RSS已逼近内存上限,开reusePort毫无意义】,还会因内核哈希表膨胀略微增加延迟。

验证是否生效:启动后执行ss -ltnp | grep :端口,若同一端口出现多个PID,说明启用成功。

相关文章

数码产品性能查询
数码产品性能查询

该软件包括了市面上所有手机CPU,手机跑分情况,电脑CPU,电脑产品信息等等,方便需要大家查阅数码产品最新情况,了解产品特性,能够进行对比选择最具性价比的商品。

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
php文件怎么打开
php文件怎么打开

打开php文件步骤:1、选择文本编辑器;2、在选择的文本编辑器中,创建一个新的文件,并将其保存为.php文件;3、在创建的PHP文件中,编写PHP代码;4、要在本地计算机上运行PHP文件,需要设置一个服务器环境;5、安装服务器环境后,需要将PHP文件放入服务器目录中;6、一旦将PHP文件放入服务器目录中,就可以通过浏览器来运行它。

2023.09.01

9524

6

php怎么取出数组的前几个元素
php怎么取出数组的前几个元素

取出php数组的前几个元素的方法有使用array_slice()函数、使用array_splice()函数、使用循环遍历、使用array_slice()函数和array_values()函数等。本专题为大家提供php数组相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.11

5741

5

php反序列化失败怎么办
php反序列化失败怎么办

php反序列化失败的解决办法检查序列化数据。检查类定义、检查错误日志、更新PHP版本和应用安全措施等。本专题为大家提供php反序列化相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.11

2055

5

php怎么连接mssql数据库
php怎么连接mssql数据库

连接方法:1、通过mssql_系列函数;2、通过sqlsrv_系列函数;3、通过odbc方式连接;4、通过PDO方式;5、通过COM方式连接。想了解php怎么连接mssql数据库的详细内容,可以访问下面的文章。

2023.10.23

3588

4

php连接mssql数据库的方法
php连接mssql数据库的方法

php连接mssql数据库的方法有使用PHP的MSSQL扩展、使用PDO等。想了解更多php连接mssql数据库相关内容,可以阅读本专题下面的文章。

2023.10.23

4274

6

html怎么上传
html怎么上传

html通过使用HTML表单、JavaScript和PHP上传。更多关于html的问题详细请看本专题下面的文章。php中文网欢迎大家前来学习。

2023.11.03

3331

9

PHP出现乱码怎么解决
PHP出现乱码怎么解决

PHP出现乱码可以通过修改PHP文件头部的字符编码设置、检查PHP文件的编码格式、检查数据库连接设置和检查HTML页面的字符编码设置来解决。更多关于php乱码的问题详情请看本专题下面的文章。php中文网欢迎大家前来学习。

2023.11.09

4737

8

php文件怎么在手机上打开
php文件怎么在手机上打开

php文件在手机上打开需要在手机上搭建一个能够运行php的服务器环境,并将php文件上传到服务器上。再在手机上的浏览器中输入服务器的IP地址或域名,加上php文件的路径,即可打开php文件并查看其内容。更多关于php相关问题,详情请看本专题下面的文章。php中文网欢迎大家前来学习。

2023.11.13

3722

8

sprintf函数用法详解
sprintf函数用法详解

sprintf函数的用法:1、格式化字符串;2、指定输出宽度和精度;3、返回值。更多关于sprintf函数用法详解的内容,大家可以阅读下面的文章。

2023.11.27

11722

4

热门下载

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

精品课程

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

共0课时 | 0人学习

Workerman官方手册
Workerman官方手册

共0课时 | 0人学习

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

共0课时 | 0人学习