workerman开发者必须知道的几个问题
1、windows环境限制
windows系统下workerman单个进程仅支持200+个连接。
windows系统下无法使用count参数设置多进程。
windows系统下无法使用status、stop、reload、restart等命令。
windows系统下无法守护进程,cmd窗口关掉后服务即停止。
windows系统下无法在一个文件中初始化多个监听。
linux系统无上面的限制,建议正式环境用linux系统,开发环境可以选择用windows系统。
2、workerman不依赖apache或者nginx
workerman本身已经是一个类似apache/nginx的容器,只要PHP环境OK workerman就可以运行。
3、workerman是命令行启动的
启动方式类似apache使用命令启动(一般网页空间无法使用workerman)。启动界面类似下面

4、长连接必须加心跳
长连接必须加心跳,长连接必须加心跳,长连接必须加心跳,重要的话说三遍。
长连接长时间不通讯会被路由节点清理导致连接关闭。
workerman心跳说明、 gatewayWorker心跳说明
5、客户端和服务端协议一定要对应才能通讯
这个是开发者非常常见的问题。例如客户端是用websocket协议,服务端必须也是websocket协议(服务端new Worker('websocket://0.0.0.0...'))才能连得上,才能通讯。
不要尝试在浏览器地址栏访问websocket协议端口,不要尝试用webscoket协议访问裸tcp协议端口,协议一定要对应。
这里的原理类似如果你要和英国人交流,那么要使用英语。如果要和日本人交流,那么要使用日语。这里的语言就类似与通许协议,双方(客户端和服务端)必须使用相同的语言才能交流,否则无法通讯。
6、连接失败可能的原因
刚开始使用workerman时很常见的一个问题是客户端连接服务端失败。 原因一般如下:
1、服务器防火墙(包括云服务器安全组)阻止了连接 (50%几率是这个)
2、客户端和服务端使用的协议不一致 (30%几率)
3、ip或者端口写错了 (15%的几率)
4、服务端没启动
7、不要使用exit die sleep语句
业务执行exit die语句会导致进程退出,并显示WORKER EXIT UNEXPECTED错误。当然,进程退出了会立刻重启一个新的进程继续服务。如果需要返回,可以调用return。sleep语句会让进程睡眠,睡眠过程中不会执行任何业务,框架也会停止运行,会导致该进程的所有客户端请求都无法处理。
8、不要使用pcntl_fork函数
pcntl_fork用来动态创建新的进程,如果在业务代码中使用pcntl_fork,它可能会产生无法回收孤儿进程,导致业务出现异常。业务中pcntl_fork还会影响连接、消息、连接关闭、定时器等事件的处理,导致不可预知的异常。
9、业务代码里不要有死循环
业务代码里不要有死循环,否则会导致控制权无法交还给workerman框架,导致无法接收处理其它客户端消息。
10、改代码要重启
workerman是常驻内存的框架,改代码要重启workerman才能看到新代码的效果。
11、长连接应用建议用GatewayWorker框架
很多开发者使用workerman是要开发长连接应用,例如即时通讯、物联网等,长连接应用建议直接使用GatewayWorker框架,它专门在workerman的基础上再次封装,做起长连接应用后台更简单、更易用。
12、支持更高并发
如果业务并发连接数超过1000同时在线,请务必优化linux内核,并安装event扩展。
相关文章:
workerman开发者必须知道的几个问题
1、windows环境限制 windows系统下workerman单个进程仅支持200个连接。 windows系统下无法使用count参数设置多进程。 windows系统下无法使用status、stop、reload、restart等命令。 windows系统下无法守护进程,cmd窗口关掉后服务即停止。 windows系统下无法在一个…...
golang Gin实现websocket
golang使用 Gin实现 websocket,这里笔者重新搭建一个项目 1、创建项目安装依赖 项目名为 go-gin-websocket 在指定文件夹下,新建项目文件夹 go-gin-websocket 进入项目文件夹,打开cmd窗口,在项目(go-gin-websocket&a…...
冯·诺依曼体系结构与初始操作系统
目录 冯诺依曼体系结构 冯诺依曼体系结构图 内存 外存 网卡和磁盘 结构之间运算速度的差异 缓冲区 初始操作系统 概念 操作系统上边与下边分别有什么 从上到下依次顺序解析 用户 用户操作接口 系统调用接口 操作系统四项管理 驱动 硬件 冯诺依曼体系结构 冯诺…...
软件测试之黑盒测试的具体方法详解
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一.基于需求的设计方法二.等价类三.边界值四.判定表4.1 **关系**4.2 如何设计测试用例4.3 实际案例第一步第二步第三步第四步 五.正交排列5.1 什么是正交表5.2 …...
图形编辑器:历史记录设计
大家好,我是前端西瓜哥。今天讲一下图形编辑器如何实现历史记录,做到撤销重做。 其实就是版本号的更替。每个版本保存一个状态。 数据结构 要记录图形编辑器的历史记录,支持撤销重做功能,需要两个栈:撤销࿰…...
ubuntu22.04下挂载第二块硬盘
文章目录 一、查看硬盘情况二、找到nvme1n1三、挂载四、修改分区文件 一、查看硬盘情况 首先要查看一下系统识别出来的设备。也就是说,我希望知道,ubuntu到底发现了几块硬盘。用命令:lsblk 显示结果如下: 有两块硬盘:…...
举例说明.net中in与out的作用与区别
-----作用 在 .NET 中,in 和 out 是用于泛型类型参数的修饰符,它们用于指定参数类型的协变性和逆变性。 - in 修饰符:表示这个泛型类型参数是协变的。也就是说,in 类型参数可以从较特殊的类型隐式转换为较通用的类型。例如&…...
Java常见的100道面试题(内附答案及代码示例)持续更新
什么是Java程序? Java程序是一组可执行的代码,由Java编译器编译生成,可以在Java虚拟机(JVM)上运行。 public class HelloWorld {public static void main(String[] args) {System.out.println("Hello, World!&qu…...
策略设计模式知多少
目录 目标 概述 实现 目标 熟悉策略设计模式,了解策略设计模式的使用场景、具体实现。 概述 一、行为设计模式 行为设计模式是设计模式的一种类型。该类型的设计模式关注的重点在于对象的行为(通信和交互),而非对象的创建方…...
第三十九章 配置镜像 - 配置 ISCAgent - 在 UNIX Linux 和 macOS 系统上为非根实例启动 ISCAgent
文章目录 第三十九章 配置镜像 - 配置 ISCAgent - 在 UNIX Linux 和 macOS 系统上为非根实例启动 ISCAgent在 UNIX/Linux 和 macOS 系统上为非根实例启动 ISCAgent在 Microsoft Windows 系统上启动 ISCAgent 自定义 ISCAgent 第三十九章 配置镜像 - 配置 ISCAgent - 在 UNIX Li…...
嵌入式安卓开发:使用Camera2获取相机
文章目录 Camera2介绍Camera2的主要API类介绍CameraManager通过CameraManage获取Cameracharacteristics通过CameraManage获取CameraDevice从CameraDevice获取CameraCaptureSession预览效果 参考 Camera2介绍 从Android 5.0开始,Google 引入了一套全新的相机框架 Ca…...
阿里云g8i服务器Intel Xeon(Sapphire Rapids) Platinum 8475B
阿里云服务器ECS通用型实例规格族g8i采用2.7 GHz主频的Intel Xeon(Sapphire Rapids) Platinum 8475B处理器,3.2 GHz睿频,g8i实例采用阿里云全新CIPU架构,可提供稳定的算力输出、更强劲的I/O引擎以及芯片级的安全加固。阿里云百科分享阿里云服…...
设计模式——组件协作模式之观察者模式
文章目录 前言一、“组件协作” 模式二、Observer 观察者模式1、动机2、模式定义3、伪代码示例①、第一种方案,最朴素的方式②、第二种方案,重构使得遵循DIP原则:③、进一步的小优化:④、修改使得支持多个观察者: 4、结…...
观察者设计模式知多少
目录 目标 概述 实现 推设计模式 拉设计模式 被动观察者设计模式 目标 熟悉观察者设计模式,了解观察者设计模式的使用场景、具体实现(包括:推设计模式、拉设计模式、被动观察者设计模式)。 概述 一、行为设计模式 行为设…...
Flink之TaskManager内存解析
一、CK失败 Flink任务的checkpoint操作失败大致分为两种情况,ck decline和ck expire: (1)ck decline 发生ck decline情况时,我们可以通过查看JobManager.log或TaskManager.log查明具体原因。其中有一种特殊情况为ck cancel&…...
为何越来越多人不喜欢“试用期六个月”的公司?网友:感觉不靠谱
众所周知,任何一份工作都有试用期,一般是三月左右。但如果你遇到试用期达到半年的公司,你会不会进入? 近日,就有人遇到了此类公司,并对是否要进入该公司犹豫不决。他在论坛上发帖求助:大家是怎…...
单例模式的四种创建方式
前言 单例模式是日常开发中最常见的一种设计模式,常用来做为池对象,或者计数器之类的需要保证全局唯一的场景。 单例模式的目的是保证在整个程序中只存在一个对象实例,使用单例一个前提条件就是构造器私有化,不允许通过new 对象…...
Nginx+Keepalived 中的脑裂现象
如何解决和预防 NginxKeepalived 中会出现的脑裂现象? Nginx是一种高性能的Web服务器和反向代理服务器,可以处理大量并发请求。Keepalived是一种开源软件,用于实现IP负载均衡和故障转移。在Nginx和Keepalived结合使用时,可以通过将多个Ngin…...
04 KVM虚拟化网络概述
文章目录 04 KVM虚拟化网络概述4.1 Linux Bridge4.2 Open vSwitch 04 KVM虚拟化网络概述 为了使虚拟机可以与外部进行网络通信,需要为虚拟机配置网络环境。KVM虚拟化支持Linux Bridge、Open vSwitch网桥等多种类型的网桥。如图1所示,数据传输路径为“虚…...
110页智慧农业解决方案(农业信息化解决方案)(ppt可编辑)
本资料来源公开网络,仅供个人学习,请勿商用,如有侵权请联系删除。 第一部分 智慧农业概述 智慧农业以农业资源为基础、市场为导向、效益为中心、产业化为抓手,面向农业管理部门、农技推广部门、农业企业、农业园区和基地、农业专…...
One API 部署教程(下):使用指南
导读:前面两篇讲了本地和线上部署,现在 One API 已经跑起来了,接下来就是真正的使用环节! 理解核心概念 在开始之前,咱们先搞清楚几个关键概念,不然后面容易晕。 渠道(Channel):就是你的各个 AI 平台的 API Key。比如你有 DeepSeek 的 Key、OpenAI 的 Key、通义千问…...
指纹浏览器缓存机制原理与环境数据安全管控策略
引言绝大多数使用者在日常运用指纹浏览器搭建独立虚拟浏览环境时,重点注意力都集中在硬件指纹修改、代理网络绑定、基础参数调试等显性操作之上,往往忽略了软件内部缓存运行机制带来的各类隐性影响。虚拟环境运行过程中自动生成的页面缓存、站点数据、本…...
【实战】Latex|在保留ACM-Reference-Format格式的前提下,实现参考文献按引用顺序排列
1. 问题背景与核心痛点 当你使用ACM官方模板撰写论文时,参考文献格式要求必须采用ACM-Reference-Format样式。这个格式有个让人头疼的特性:它会强制按作者姓氏字母顺序排列参考文献,而不是按照文中实际引用顺序。想象一下,你精心设…...
STM32 HAL库实战:用CD74HC4067扩展模拟输入通道,附完整工程代码
STM32 HAL库实战:用CD74HC4067扩展模拟输入通道,附完整工程代码 在嵌入式开发中,模拟信号采集是常见需求,但MCU内置ADC通道数量往往有限。当面对多路传感器信号采集时,如何经济高效地扩展输入通道成为开发者必须解决的…...
电力线路保护原理与整定计算实战解析:从电流、距离到差动保护
1. 项目概述:从“黑匣子”到“透明逻辑”在电力系统这个庞大而精密的网络中,输电线路如同人体的动脉血管,承担着输送能量的核心使命。然而,这条“动脉”时刻面临着雷击、外力破坏、绝缘老化、过负荷等各类风险的威胁。一旦发生故障…...
从IGS文件命名变迁,看GNSS数据处理流程的演进与自动化机遇
从IGS文件命名变迁透视GNSS数据处理的智能化演进 在卫星导航定位领域,IGS(国际GNSS服务组织)产品文件命名规则的每一次调整都像一面镜子,映射出整个行业的技术演进方向。2022年底从V1.0到V2.0命名规范的升级,绝非简单的…...
从零到一:用Air724UG 4G模块和Python,手把手搭建一个物联网数据上报系统(含完整代码)
从零构建基于Air724UG的物联网数据中台:Python全栈开发实战 当你拿起一块Air724UG 4G模块时,握在手中的不仅是通讯硬件,更是连接物理世界与数字世界的桥梁。这个火柴盒大小的模块能够将田间地头的土壤数据、工厂车间的设备状态、城市角落的环…...
藏在Modbus‘写寄存器’请求里的秘密:用Python+pyshark复现CISCN2023流量分析
藏在Modbus‘写寄存器’请求里的秘密:用Pythonpyshark复现CISCN2023流量分析 当生产网络流量中出现异常数据包时,传统的手动分析方式往往效率低下。本文将带你用Pythonpyshark构建自动化分析流水线,从海量Modbus协议数据中快速定位可疑通信模…...
对比直接使用官方api体验taotoken在计费透明性与灵活性上的优势
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 对比直接使用官方 API 体验 Taotoken 在计费透明性与灵活性上的优势 在开发基于大模型的应用时,除了模型效果和稳定性&…...
Nintendo Switch游戏备份终极指南:用nxdumptool轻松提取你的游戏收藏
Nintendo Switch游戏备份终极指南:用nxdumptool轻松提取你的游戏收藏 【免费下载链接】nxdumptool Generates XCI/NSP/HFS0/ExeFS/RomFS/Certificate/Ticket dumps from Nintendo Switch gamecards and installed SD/eMMC titles. 项目地址: https://gitcode.com/…...
