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

啊哒梨

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

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

  • 条件成立时
    • 创建1-2个一次性的定时器,写入数据库或者发送邮件
    • 写数据到数据库里
    • 推送数据到组中的随机一个用户

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

感谢回答的各位!

3368 5 0
5个回答

啊哒梨

这是错误截图

  • 暂无评论
walkor

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

  • 暂无评论
啊哒梨

@walkor

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

  • 暂无评论
walkor

可以用redis存

jiabin

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

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

  • 静默 2021-01-14

    运行 php -v 和 php -m ,看下有问题的服务器是不是php版本不一致或者装了什么特别的扩展。

年代过于久远,无法发表回答
🔝