讲师中心 微信公众号
AI工具推荐 视频效率加速

Workerman连接数过高应该如何优化处理

胖强小哥_2800

胖强小哥_2800

发布时间:2026-06-29 18:53:35

|

534人浏览过

|

来源于php中文网

原创

本质是系统文件描述符耗尽或内核网络栈瓶颈,需先查进程fd限制与占用、再查软中断分布,分层调大ulimit、配置systemd/supervisord、合理设置maxConnections与worker count,并启用reusePort及分散网卡中断亲和性。

workerman连接数过高应该如何优化处理

Workerman连接数过高导致新连接被拒绝、ESTABLISHED堆积、响应延迟飙升,本质是系统文件描述符耗尽或内核网络栈瓶颈触发的连锁反应,不是单纯调大maxConnections就能解决。

确认真实瓶颈在哪

先查进程实际可用fd上限,别信配置文件:用cat /proc/$(pgrep -f "start.php" | head -1)/limits | grep "Max open files",输出两列数字——左边是软限制,右边是硬限制。【软限制必须≤硬限制,否则启动时会被截断】

再看当前fd占用:用lsof -p $(pgrep -f "start.php" | head -1) | wc -l,如果接近或等于上一步查出的软限制值,说明确实是fd耗尽;如果远低于该值但连接已卡死,就要查网卡软中断是否单核打满(top看si%是否持续>30%且只集中在CPU0)。

分层调整系统文件描述符限制

方法一:临时生效(仅用于测试或紧急恢复)
在启动Workerman前执行:ulimit -n 65535,然后运行php start.php start -d。这步操作起来很简单,但重启shell后失效。

方法二:永久生效(生产环境必须做)
① 编辑/etc/security/limits.conf,追加两行:
www-data soft nofile 65535
www-data hard nofile 65535
② 如果用systemd管理,还需编辑/etc/systemd/system/workerman.service,在[Service]段下加LimitNOFILE=65535。
【改完必须重启Workerman主进程,reload不生效,因为fd限制只在fork时读取一次】

方法三:绕过PAM限制(supervisord或crontab启动时必做)
supervisord配置中不能只写command=php start.php start -d,要改成:
command=/bin/sh -c "ulimit -n 65535 && php start.php start -d"。

收紧Workerman自身连接控制

设$worker->maxConnections为系统可用fd的70%~80%,例如cat /proc/$(pgrep -f "start.php"|head -1)/limits | awk '{print $5}' | head -1查出硬限制是65535,则设$worker->maxConnections = 52428。【不要设成65535——定时器、日志句柄、DNS查询也要占fd,留余量才能稳住】

同时检查$worker->count是否合理:用nproc查CPU核心数,设为1.5倍左右。4核机器设6个进程,16核设24个,再多反而因调度开销拖慢吞吐。

启用$worker->reusePort = true,让内核直接把新连接均匀分发到各Worker进程,避免默认队列竞争导致的分配倾斜。

释放网卡软中断压力

第一步:确认网卡是否支持多队列,执行ethtool -l eth0(把eth0换成你的网卡名),看Combined最大值是否>1。

第二步:查当前中断分布,执行cat /proc/interrupts | grep eth0,观察每行末尾各CPU计数是否严重不均。

第三步:手动绑定中断到多个CPU,例如将IRQ 45绑定到CPU0-3:echo 0-3 > /proc/irq/45/smp_affinity_list(需root权限)。绑定前先停掉irqbalance服务,避免它动态抢改。

第四步:压测验证,运行watch -n1 'cat /proc/interrupts | grep eth0',看到各CPU列计数逐步趋近均匀,说明软中断负载已分散。

热门AI工具

更多
豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

VibeKnow
VibeKnow Hot

一款AI视频创作工具,主要用于全球首个AI知识视频创作平台,文档、文章、网页,一键生成视频,适合需要提升相关任务效率的用户。

讯飞绘文

讯飞绘文是一款由科大讯飞推出的一站式 AIGC 内容运营平台。

PixTV
PixTV Hot

PixTV是一款面向AIGC内容创作的AI视频生成工具。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

二狗PPT
二狗PPT Hot

一款AI演示文稿工具,主要用于专为中式职场打造的AI PPT生成工具,适合需要提升相关任务效率的用户。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

切问学术

切问学术是一款AI论文写作工具,复旦大学NLP团队推出的AI学术智能体。

UP简历
UP简历 Hot

一款AI办公效率工具,主要用于基于AI技术的免费在线简历制作工具,适合需要提升相关任务效率的用户。

相关专题

更多
开发工具有哪些
开发工具有哪些

开发工具有:1、集成开发环境IDE;2、版本控制系统VCS;3、自动化构建工具;4、测试工具;5、代码分析工具。本专题为大家提供开发工具有哪些的相关的文章、下载、课程内容,供大家免费下载体验。

2606

2023.08.02

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

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

186

2026.05.20

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

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

202

2026.05.20

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

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

207

2026.05.20

Revel框架入门与安装配置
Revel框架入门与安装配置

本专题从Revel框架环境搭建讲起,系统介绍命令行工具安装、项目创建、目录结构、配置文件及热代码重载,帮助开发者快速完成首个Go Web应用。

0

2026.10.16

Linux 新手先学哪些命令
Linux 新手先学哪些命令

Linux新手命令专题汇集终端基础、文件目录操作、文本查看、软件安装和权限管理等入门文章,帮助按实际任务练习常用命令并建立命令行操作习惯。

0

2026.10.15

MySQL 忘记密码怎么办
MySQL 忘记密码怎么办

MySQL忘记密码专题汇集不同版本与系统下的root密码重置方法,覆盖MySQL 5.7、8.0、Mac、Linux及本地集成环境,并提示恢复权限与重新登录的检查步骤。

0

2026.10.15

Vue.js 中 ref 和 reactive 的区别
Vue.js 中 ref 和 reactive 的区别

Vue.js中ref和reactive的区别专题汇集两种响应式API的定义、访问方式、对象解构、侦听与性能取舍等文章,帮助结合实际状态类型选择合适写法。

0

2026.10.15

VS Code 怎么配置开发环境
VS Code 怎么配置开发环境

VS Code开发环境专题汇集编辑器安装、语言扩展、编译器、解释器、终端和调试配置文章,覆盖Java、Python、C++和PHP等常见语言的入门设置。

0

2026.10.15

热门下载

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

精品课程

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

共0课时 | 0人学习

Workerman官方手册
Workerman官方手册

共0课时 | 0人学习

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

共0课时 | 0人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn