直接运行php start.php status可查看Workerman 5.2.3运行状态,输出表格含connections、total_request、mem_usage、state四列,分别反映连接数、请求数、内存占用及进程状态;需以-d守护模式启动并确保用户权限与socket文件一致。

直接运行 php start.php status 即可查看 Workerman 5.2.3 的当前运行状态。这是官方支持、开箱即用的标准方式,无需额外安装或配置。
status 命令输出的核心字段怎么看
执行后你会看到一个表格,每行代表一个 Worker 进程,重点关注以下四列:
- connections:当前活跃连接数。> 0 且随客户端接入有波动,说明网络层已通;长期为 0 可能是端口未暴露、防火墙拦截,或 onMessage 中异常被静默吞掉
- total_request:该进程累计处理请求数。持续缓慢增长(哪怕每秒 1–2 次),表明业务逻辑正在响应;若长期停滞而其他进程正常,大概率卡在死循环、未 catch 异常或 await 未完成
- mem_usage(单位 MB):内存占用。稳定在几 MB 到几十 MB 属正常;若缓慢爬升(如 2小时从 25MB → 68MB)提示内存泄漏;突增至百 MB 级需检查大对象是否未 unset 或全局缓存无节制写入
- state:状态值为 ok(空闲)、busy(正处理请求)、stopping(正在退出)。持续 busy 超 30 秒,说明存在同步阻塞(如 file_get_contents、PDO 查询无超时、curl 同步调用)
查不到状态?先确认这三件事
status 命令依赖底层通信机制,失败通常不是命令问题,而是环境没对齐:
- 必须用 php start.php start -d 启动(带
-d守护进程模式),前台启动(start不加-d)不会创建管理 socket - 检查
/tmp/workerman.*.status*文件是否存在且未残留。stop 后再 start -d,旧 socket 未清理会导致新进程绑定失败 → 手动执行rm /tmp/workerman.*.status* - 启动用户与执行 status 用户需一致。root 启动的服务,普通用户执行 status 会因权限拒绝访问 → 统一用业务用户(如 www-data)启动,或调整
/tmp下 status 文件属主和权限(建议 644)
connections 命令:排查连接级问题的补充工具
Workerman 5.2.3 原生支持 php start.php connections(仅限 TCP/UDP Worker,默认 HTTP/WebSocket 需手动启用连接统计):
- 每行对应一条真实连接,含
from_ip、send_queue_size(待发数据量)、last_send_time - 若大量连接
send_queue_size > 0且last_send_time长时间未更新 → 客户端已断连,但服务端未触发 onClose(常见于心跳缺失或Worker::$connectionTimeout设置过大) - 输出较重,高峰期慎用;建议先低峰执行,配合
head -n 50或grep "192.168.1."过滤分析
比 ps 更可靠的状态判断逻辑
别只看“有没有进程”,status 的价值在于它读取的是主进程共享内存里的实时统计值:
- 返回有效表格 → 主进程存活、socket 可达、Worker 正常注册 → 服务真正就绪
- 报 No pid file 或 Can not connect to master process → 服务根本没起来,或启动失败后自动退出(检查 start.php 日志、扩展是否缺失、端口是否被占)
- ps aux | grep workerman 显示进程但 status 失败 → 很可能是僵尸进程或旧 pid 文件残留,不可信

















