workerman 5.2.3 已成功启动并正常工作当且仅当执行 php start.php status 返回含 connections、total_request、mem_usage 的表格;若报“no pid file”或“can not connect to master process”,说明未启动,需用 -d 守护模式启动并检查 pid 文件与 socket 权限。

直接执行 php start.php status,能返回带 connections、total_request、mem_usage 的表格,就说明 Workerman 5.2.3 已成功启动并正常工作;如果报错“No pid file”或“Can not connect to master process”,说明服务根本没跑起来。
确认是否用守护进程模式启动
Workerman 5.2.3 的 status 命令只在 -d(daemon)模式 下生效,因为只有这时主进程才会创建 Unix socket(默认 /tmp/workerman.status)并写入共享内存统计。如果你只运行了:
-
php start.php start(前台调试模式)→ status 必然失败 - 正确命令应为:
php start.php start -d
检查 pid 文件和 socket 权限
status 命令依赖两个关键文件:
-
PID 文件:默认是
workerman.pid,路径由Worker::$pidFile指定。若你改过该值(比如设为/var/run/workerman.pid),status 就会去错地方找 -
Status socket 文件:如
/tmp/workerman.12345.status(数字是主进程 PID),需存在且当前用户有读权限(推荐 644,属主匹配启动用户) - 常见问题:root 启动但普通用户执行 status → 因 socket 属 root 且权限不足被拒绝
看 status 输出里这三项是否“活”着
别只盯着有没有表格,重点观察动态指标:
- connections > 0,且用浏览器或 wscat 连一次 WebSocket 后数值上升 → TCP/WS 层通了
- total_request 缓慢增长(哪怕每秒 1–2 次)→ onMessage 或 onReceive 回调正在执行业务逻辑
- mem_usage 稳定在几 MB 区间(不是 0、也不是持续飙升到百 MB)→ 内存未泄漏,进程未卡死
辅助验证:连通性 + 日志 + 进程
status 是最准的判断依据,但可配合以下方式交叉验证:
- 用
wscat -c ws://127.0.0.1:2346(替换为你配置的端口)测试能否握手成功 - 查日志:
tail -f workerman.log,看是否有Worker started和Websocket server started类提示 - 查进程:
ps aux | grep workerman,确认有 master 进程和若干 worker 进程,且无大量<defunct></defunct>(僵尸进程)











