BusinessWorker内存持续增长,直到溢出exit

0

有几个疑问,不知道是不是造成内存持续增长的原因
以下是大致的消息处理流程
在 Events.php 里,每秒发送数据的次数在3-8次左右,每次发送的数据量不大。
设备有两种数据处理方式


其中一类处理,频繁的数据转发到组。
另一类处理,频繁的操作redis(出队入队)、更新session数据。



  • 条件成立时

    • 创建1-2个一次性的定时器,写入数据库或者发送邮件

    • 写数据到数据库里

    • 推送数据到组中的随机一个用户



不知道是在哪里的代码有问题,memory_limit 已经设置到800M啦


感谢回答的各位!

已邀请:

walkor

赞同来自: 啊哒梨 BlackGentler

可以用redis存

walkor

赞同来自: 啊哒梨

猜测有可能是session存的数据太大了

啊哒梨

赞同来自:

这是错误截图

啊哒梨

赞同来自:

@walkor


session数据应该不会太大,不知道频繁的更新session有没关系?
用GlobalData作为替换方案可以吗?

jiabin - 疯狂写bug

赞同来自:

我使用TP6 结合 workerman 开启了websocket 协议,作为服务端给客户端推送数据。
同时服务器又作为客户端订阅了火币网的数据作为数据源。
转发数据过程没有存储数据,来多少数据转发多少数据。
我分别在三个服务器部署了这套脚本。
除了每个服务器开放的端口不同外,其他代码一摸一样。
问题是,前两个服务器运行很正常,无论接收多少请求,使用php think xxxx status 查看运行状态 memory 都是维持在8M,然而最后一个服务器开启后 memory 随着total_request 不断增长。
如果不限制php.ini memory_limit 的值 内存会一直增长 直到耗尽 然后会自动重启 继续开始增长,如此往复。


我觉得workerman 本身没有问题. linux系统环境方面考虑 是否有什么思路可以去排查,求大佬指引方向。

要回复问题请先登录注册