Workerman连接数超过1024后性能下降怎么优化内核

梦杰同学_6350

梦杰同学_6350

2026-08-08

372人浏览

原创

Workerman连接数超1024后响应延迟或拒绝连接,根本原因是Linux内核参数不匹配:文件描述符耗尽、连接队列溢出、TIME_WAIT堆积导致监听线程卡死;需检查并永久提升进程fd限制(limits.conf+systemd配置)、调大内核网络队列(somaxconn等)、启用tcp_tw_reuse(非NAT环境)、增大系统级file-max。

workerman连接数超过1024后性能下降怎么优化内核

Workerman连接数突破1024后出现响应延迟、新连接超时或直接拒绝,根本原因是Linux内核默认参数与高并发场景严重不匹配——文件描述符耗尽、连接队列溢出、TIME_WAIT堆积会立刻卡死监听线程,导致worker进程空转却无法接收新连接。

确认当前系统限制是否真实生效

先查Workerman主进程实际可用的文件描述符上限:用ps aux | grep workerman拿到主进程PID,再执行cat /proc//limits | grep "Max open files"。这个值才是Workerman真正能用的上限,不是ulimit -n在终端里显示的值——后者只影响你当前shell启动的进程,对systemd或supervisord托管的服务无效。

如果输出显示soft limit仍是1024,说明系统级配置没穿透到Workerman进程,后续所有内核调优都白做。

永久提升单进程文件描述符上限

方法一:修改/etc/security/limits.conf

追加两行(假设Workerman以www-data用户运行):

www-data soft nofile 65535
www-data hard nofile 65535

方法二:systemd服务必须额外声明

编辑/etc/systemd/system/workerman.service,在[Service]段落里添加:

LimitNOFILE=65535

【改完必须执行systemctl daemon-reload && systemctl restart workerman】,reload不是reload,是彻底重启进程才能重新读取fd限制。

调整内核网络连接队列参数

第一步:编辑/etc/sysctl.conf,追加以下四行

net.core.somaxconn = 65535
net.ipv4.tcp_max_syn_backlog = 65535
net.core.netdev_max_backlog = 5000
net.ipv4.tcp_fin_timeout = 30

第二步:执行sysctl -p立即生效

阿贝智能
阿贝智能

一款面向儿童内容创作的AI平台,帮助用户制作儿童绘本、睡前故事和有声内容,将文字创意转化为完整的故事作品。

下载

第三步:同步修改Apache或Nginx反向代理配置(如有)

若Workerman前端挂了Nginx,需在nginx.conf的events块中加multi_accept on;和use epoll;;若直连,跳过此步。

注意:somaxconn控制全连接队列长度,tcp_max_syn_backlog控制半连接队列。Worker模式下监听线程是单点,这两个值必须≥Workerman设置的$maxConnections,否则SYN包直接被内核丢弃,客户端看到的是“Connection refused”而非超时。

释放TIME_WAIT连接加速端口复用

执行命令临时启用:

sysctl -w net.ipv4.tcp_tw_reuse=1

然后写入/etc/sysctl.conf固化:

net.ipv4.tcp_tw_reuse = 1

这能让处于TIME_WAIT状态的socket在安全前提下快速复用,避免端口耗尽。但【严禁在NAT环境或客户端位于同一出口IP的场景开启】,否则会导致连接混乱或重置。

增大系统级文件句柄总量

编辑/etc/sysctl.conf,追加:

fs.file-max = 6815744

该值应≥所有Workerman进程fd上限之和×1.5(预留日志、定时器等开销)。例如启4个worker进程,每个设65535,则最低需4×65535×1.5≈39万,6815744足够覆盖百级并发规模。

执行sysctl -p生效。

相关文章

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

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

下载

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

相关专题

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

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

2023.08.02

3206

5

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

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

2026.05.20

226

15

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

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

2026.05.20

222

12

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

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

2026.05.20

227

13

Postman身份认证怎么配置
Postman身份认证怎么配置

本专题从实际API接口调试场景出发,讲解Postman身份认证的完整配置流程,包括常见认证协议介绍、授权参数设置、访问令牌填写、OAuth 2.0授权及认证失败排查,帮助用户正确完成接口授权与访问验证。

2026.11.06

60

12

Postman请求头Headers怎么设置
Postman请求头Headers怎么设置

围绕Postman HTTP请求头配置展开,讲解Headers选项的具体使用方式,包括Key和Value参数填写、请求头信息添加、常见Header字段设置及请求头修改方法,帮助用户解决接口调试过程中遇到的请求头配置问题。

2026.11.06

20

13

Postman接口请求发送教程
Postman接口请求发送教程

详细介绍Postman接口请求的创建与发送方法,涵盖GET和POST请求、URL配置、请求参数、Headers请求头、Body请求体设置以及响应结果查看,帮助用户掌握Postman接口请求的完整操作流程。

2026.11.06

40

10

DBeaver怎么导入数据
DBeaver怎么导入数据

DBeaver数据导入专题,整理Excel、CSV、SQL、TXT等常见文件的数据导入方法,涵盖目标数据库选择、数据表创建、字段映射、数据类型设置及导入参数配置等操作,帮助用户将本地文件中的数据写入数据库,并了解批量导入、重复数据处理和导入失败等常见问题的解决方法。

2026.11.05

60

12

DBeaver安全防护教程大全
DBeaver安全防护教程大全

DBeaver安全防护专题,围绕数据库连接安全、账号密码保护和访问权限管理展开,整理SSL/TLS加密连接、SSH隧道、数据库凭据保存及证书验证等配置方法,同时介绍敏感信息保护、远程连接风险和高权限账号使用等注意事项,帮助用户提高数据库日常管理的安全性。

2026.11.05

40

12

热门下载

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

精品课程

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

共0课时 | 0人学习

Workerman官方手册
Workerman官方手册

共0课时 | 0人学习

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

共0课时 | 0人学习