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

客户端连接不上Workerman怎么排查_防火墙和端口检测步骤【操作】

夜墨小哥_1403

夜墨小哥_1403

发布时间:2026-03-12 19:36:37

|

672人浏览过

|

来源于php中文网

原创

确认Workerman进程是否真正在监听端口,需用ss -tuln | grep :端口验证内核监听状态;若仅显示127.0.0.1则外部不可访问,应绑定0.0.0.0;ps aux需见worker进程,无则检查onWorkerStart异常;客户端须telnet服务器真实IP,同时排查安全组、防火墙、Docker绑定及TIME_WAIT问题。

客户端连接不上workerman怎么排查_防火墙和端口检测步骤【操作】

确认 Workerman 进程是否真正在监听端口

很多人看到 php start.php start 输出 “Start success”,就以为服务起来了,其实可能只是主进程启动了,Worker 子进程因配置错误、代码异常或权限问题根本没起来。最直接的验证方式是查系统级监听状态,而不是只看 Workerman 日志。

  • Linux/macOS 上用 ss -tuln | grep :2345(把 2345 换成你实际监听的端口),有输出才说明内核确实在监听;没有输出,90% 是 Workerman 没跑起来或监听失败
  • 如果看到 127.0.0.1:2345 但看不到 *:2345,说明 Workerman 绑定了 localhost,外部客户端连不上——得检查 $worker->listen('tcp://0.0.0.0:2345') 或 'tcp://*:2345',不能写成 'tcp://127.0.0.1:2345'
  • Workerman 启动后,ps aux | grep WorkerMan 应该能看到至少一个 WorkerMan: worker process 进程;只有 master process 而没有 worker,基本是 onWorkerStart 抛了未捕获异常,去 workerman.log 最末尾找 Fatal error 或 Exception

本地 telnet 能通 ≠ 客户端能连,重点看目标 IP 和网络路径

在服务器上 telnet 127.0.0.1 2345 成功,只说明本机 loopback 通;客户端连不上,大概率卡在中间某一层:本机防火墙、云厂商安全组、NAT 网关、甚至客户端所在局域网出口策略。

  • 从客户端机器直接执行 telnet your-server-ip 2345 —— 这步必须做,不能只信服务器上的测试
  • 云服务器(阿里云/腾讯云等)务必进控制台检查「安全组规则」,确认入方向放行了对应端口(协议选 TCP,源 IP 如果是未知客户端,暂时设为 0.0.0.0/0 测试)
  • 本地开发用 VirtualBox / WSL / Docker 时,宿主机 Windows/macOS 的防火墙常默认拦截外来连接;Windows 上临时关掉「Windows Defender 防火墙」或加入例外规则,macOS 查 pfctl -sr 或系统偏好设置 → 防火墙
  • 如果 Workerman 跑在 Docker 容器里,除了 -p 2345:2345,还得确认容器内监听的是 0.0.0.0:2345,不是 127.0.0.1:2345(后者在容器里也只响应 localhost)

Workerman 日志里没报错,但连接被静默拒绝?查 SO_REUSEADDR 和 TIME_WAIT

端口看似空闲,但系统还没彻底释放上次连接的 socket,新进程 bind 会失败,Workerman 却可能不报错、也不监听——此时客户端 Connection refused,但 ss -tuln 看不到端口,日志也干净。

  • 启动前手动清理:先 killall php(或按 PID 杀掉所有 Workerman 进程),再 ss -tan | grep :2345 看是否有 TIME_WAIT 状态残留;大量存在说明连接频繁断开,需调优
  • 在 Workerman 启动代码里显式设置 $worker->reusePort = true;(PHP 7.0+ Linux),避免端口争抢;老版本或 Windows 可设 $worker->soReusePort = true;(需内核支持)
  • 别依赖 start.php restart,它只是 stop + start,stop 不一定杀干净;生产环境改用 start.php stop && sleep 1 && start.php start 更稳妥

客户端连上又立刻断开?检查协议握手和心跳逻辑

Workerman 默认是裸 TCP,客户端发数据前没做任何协议协商。如果客户端期望 HTTP 握手、WebSocket 升级,或服务端开了 heartbeat_idle_time 但客户端没发心跳,就会秒断。

  • 用 nc -v your-server-ip 2345 手动连,敲几个字符回车——如果立刻断开,说明服务端代码里可能写了 $connection->close() 在 onMessage 外触发,或 onConnect 里抛了异常
  • 检查 onMessage 是否对非法数据直接 return 而没 $connection->send(),某些客户端库会把无响应当成异常断连
  • 若启用了心跳($worker->ping_interval = 30;),客户端必须每 ping_interval - ping_not_response_limit 秒内发一次任意数据,否则 Workerman 主动 close;调试阶段可先注释掉心跳相关配置
  • Wireshark 抓包看三次握手是否完成、SYN/ACK 是否返回、是否有 RST 包——这是绕过所有应用层日志的终极手段

真正卡住排查的,往往是“明明端口开着、日志没报错、telnet 也通,但就是连不上”。这时候得一层层剥:先确认客户端真实发出的 SYN 到了哪一层,再反推是防火墙拦了、路由丢了、还是 Workerman 根本没收到连接请求。别急着改代码,先让网络路径自己说话。

热门AI工具

更多
PixPix
PixPix Hot

PixPix是一款面向电商视觉生产的AI商品图生成工具。

WorkBuddy

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

VibeKnow
VibeKnow Hot

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

小橡皮AI

一款AI工具,主要用于小橡皮一键去AI味,将机器味重的内容改得更有活人感,防止因为 AI 内容被平台打上 AI 标签,以及限流,适合需要提升相关任务效率的用户。

Seko
Seko Hot

一款AI视频创作工具,主要用于商汤科技推出的创编一体的AI短视频创作Agent,适合需要提升相关任务效率的用户。

讯飞智作

讯飞智作是一款AI视频创作工具,AI文本配音工具,数字人课程、营销视频制作。

DeepSeek

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

超级简历WonderCV

一款AI办公效率工具,主要用于免费求职简历模版下载制作,应届生职场人必备简历制作神器,适合需要提升相关任务效率的用户。

豆包大模型

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

相关专题

更多
Workerman安装配置教程
Workerman安装配置教程

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

226

2026.05.20

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

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

222

2026.05.20

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

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

227

2026.05.20

Docker Desktop怎么设置端口映射
Docker Desktop怎么设置端口映射

本专题聚焦Docker Desktop容器端口映射与访问配置,整理从创建容器、设置端口绑定到验证本地服务访问的操作流程。针对端口被占用、映射配置错误、容器服务无法访问等情况,也提供相应的检查方向,方便用户完成端口配置。

0

2026.11.03

Docker Desktop镜像构建教程
Docker Desktop镜像构建教程

想使用Docker Desktop将本地项目构建成Docker镜像?本专题围绕镜像构建的实际操作展开,介绍Dockerfile编写、构建命令使用、镜像标签设置和构建日志查看等内容,同时整理镜像无法生成、依赖安装失败及构建缓存异常等问题的排查思路。

0

2026.11.03

Docker Desktop容器创建指南
Docker Desktop容器创建指南

本专题聚焦Docker Desktop容器创建与运行配置,介绍通过本地镜像或远程镜像创建容器的方法,以及容器启动、终端访问、日志查看和基础管理等操作。针对端口冲突、参数配置不当、容器无法启动等情况,也整理了相应的排查方向。

0

2026.11.03

Tailwind CSS 如何制作导航栏和卡片
Tailwind CSS 如何制作导航栏和卡片

用 Tailwind CSS 制作导航栏和卡片,可先搭建语义化结构,再组合 Flex、Grid、间距、圆角与阴影类。这里整理横向导航、移动端菜单、卡片网格及悬停效果的相关文章,帮助你把常见页面组件做得清晰且适配不同屏幕。

0

2026.11.03

Tailwind CSS 响应式布局怎么写
Tailwind CSS 响应式布局怎么写

Tailwind CSS 响应式布局通常从移动端样式写起,再用 sm、md、lg 等前缀调整不同屏幕宽度下的网格、间距和导航。本专题整理断点配置、Grid 与 Flex 自适应布局及常见溢出问题,帮助你逐步完成多设备适配。

0

2026.11.03

Tailwind CSS 常用类名怎么记
Tailwind CSS 常用类名怎么记

Tailwind CSS 类名很多,先按布局、间距、文字、颜色和状态分组记忆,再通过官方文档检索具体写法。本专题结合类名排序、动态拼接失效、自定义实用类等问题,帮助你建立常用类名的速查方法。

0

2026.11.03

热门下载

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

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
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