tp6+gateway sendToUid 第一次无响应 第二次正常接收

chern

本地正常,线上websocket推送第一次失效 第二次接着发送正常接收

考虑会不会因为没加心跳,管道挂起问题,但是有时候第一次就可以接收到,前段做了个重复bind,每30s一次,这样会不会充当心跳!

Events.php:用户连接进来开启一个定时器,
截图
业务方面
截图

操作系统环境及workerman/webman等具体版本

线下是wa环境 线上是ln环境 控制台没有报错

267 1 0
1个回答

damao

你们这不是乱写嘛,每个客户端都在连接的时候在内存里加一个定时器,然后又不删除。跑着跑着内存就因为无限添加定时器爆了,cpu也会呼呼的转

  • chern 2023-11-17

    业务需求是用户设置延迟提醒某个内容,进程定时器获取不到用户token,所以放在用户链接的时候,业务规模比较小,集团oa大概百人左右

  • 稚出 2023-11-17

    需要一直提醒吗

  • damao 2023-11-17

    看下workerman.log日志 tp/runtime下的日志

  • chern 2023-11-17

    今天部署发生的 只有启动、重启、停止记录,runtime下无错误记录

  • walkor 2023-11-17

    一次性定时器没问题,如果是持久定时会内存泄漏,需要在合适的时候将定时器删除。
    最好不要用tp来运行gatewayWorker workerman,运行命令行运行的时候tp可能会提前连数据库,导致子进程继承同一个数据库连接,使用数据库的时候失败。

  • chern 2023-11-20

    我在onWorkerStart 进行mysql初始化 TP里用了sendToUid 所以不会是内存泄露影响消息问题吧,消息时有时无 第一次发送没有响应,之后正常,

🔝