Skip to content

监控与故障排查

按照“进程 → HTTP → WebSocket → 数据库 → 浏览器”的顺序排查,可避免只看前端而遗漏服务端状态。

运行时文件

文件或目录用途
runtime/logs/webman.log应用日志。
runtime/logs/workerman.logWorkerman 运行日志。
runtime/logs/stdout.log进程标准输出。
runtime/webman.pid进程 PID。
runtime/webman.statusstatus 命令生成的状态信息。
runtime/sessions/文件 Session 默认存储位置。

常见问题

现象先检查处理方向
HTTP 页面无法访问php start.php status、反向代理和 webman.log确认 Webman HTTP 进程、监听端口与网关转发。
客服接口返回“请登录”浏览器 Cookie、token 请求头/查询参数和 Session 存储重新登录;确认多实例环境共享了正确的 Session 存储。
访客接口返回 Token 错误Authorization: Bearer 头、Token 过期状态及是否已访问 /visitor由服务端重新签发 Token;不要在请求中伪造身份字段。
页面能打开但收不到实时消息setting.ws_address、Socket 进程、代理 Upgrade 配置和订阅频道检查 Socket 服务是否运行,客户端重连后重新订阅。
重连后消息缺失或重复本地 mid 去重逻辑和消息历史补拉mid 去重,并从消息列表接口补拉。
上传失败public/upload/ 权限、PHP 上传限制和接口返回的大小限制校验运行账户写权限、文件大小和文件类型。
数据库连接失败config/think-orm.php、PDO 扩展与数据库网络检查驱动、主机、端口、账号密码和数据库服务状态。

推荐排查命令

bash
php start.php status
php start.php restart

查看日志时优先定位同一时间段内的 HTTP 请求、应用异常和 Socket 连接状态。不要把完整 Cookie、访客 Token、密码或推送密钥复制到工单和公开日志。

WebSocket 最小检查

  1. 调用访客或客服初始化接口,确认 setting.ws_address 为预期的公网地址。
  2. 在浏览器网络面板确认 WebSocket 握手成功。
  3. 确认客户端订阅初始化数据给出的频道;访客端不要自行拼接频道名。
  4. 发送一条测试消息,确认 HTTP 写入成功且双方收到 message.created
  5. 主动断开并重连,确认客户端重新订阅并按 mid 补拉消息。

提交故障信息

为便于复现,故障报告应包含:发生时间(含时区)、访问页面、请求路径、HTTP 状态或业务 code、脱敏后的日志片段、浏览器与网络环境、以及是否能在重连后恢复。不得附带密码、完整 Token 或 Session Cookie。