有几个疑问,不知道是不是造成内存持续增长的原因 以下是大致的消息处理流程 在 Events.php 里,每秒发送数据的次数在3-8次左右,每次发送的数据量不大。 设备有两种数据处理方式
其中一类处理,频繁的数据转发到组。 另一类处理,频繁的操作redis(出队入队)、更新session数据。
不知道是在哪里的代码有问题,memory_limit 已经设置到800M啦
感谢回答的各位!
这是错误截图
猜测有可能是session存的数据太大了
@walkor
session数据应该不会太大,不知道频繁的更新session有没关系? 用GlobalData作为替换方案可以吗?
可以用redis存
好的,谢谢walkor大大
我使用TP6 结合 workerman 开启了websocket 协议,作为服务端给客户端推送数据。 同时服务器又作为客户端订阅了火币网的数据作为数据源。 转发数据过程没有存储数据,来多少数据转发多少数据。 我分别在三个服务器部署了这套脚本。 除了每个服务器开放的端口不同外,其他代码一摸一样。 问题是,前两个服务器运行很正常,无论接收多少请求,使用php think xxxx status 查看运行状态 memory 都是维持在8M,然而最后一个服务器开启后 memory 随着total_request 不断增长。 如果不限制php.ini memory_limit 的值 内存会一直增长 直到耗尽 然后会自动重启 继续开始增长,如此往复。
我觉得workerman 本身没有问题. linux系统环境方面考虑 是否有什么思路可以去排查,求大佬指引方向。
运行 php -v 和 php -m ,看下有问题的服务器是不是php版本不一致或者装了什么特别的扩展。
这是错误截图
猜测有可能是session存的数据太大了
@walkor
session数据应该不会太大,不知道频繁的更新session有没关系?
用GlobalData作为替换方案可以吗?
可以用redis存
好的,谢谢walkor大大
我使用TP6 结合 workerman 开启了websocket 协议,作为服务端给客户端推送数据。
同时服务器又作为客户端订阅了火币网的数据作为数据源。
转发数据过程没有存储数据,来多少数据转发多少数据。
我分别在三个服务器部署了这套脚本。
除了每个服务器开放的端口不同外,其他代码一摸一样。
问题是,前两个服务器运行很正常,无论接收多少请求,使用php think xxxx status 查看运行状态 memory 都是维持在8M,然而最后一个服务器开启后 memory 随着total_request 不断增长。
如果不限制php.ini memory_limit 的值 内存会一直增长 直到耗尽 然后会自动重启 继续开始增长,如此往复。
我觉得workerman 本身没有问题. linux系统环境方面考虑 是否有什么思路可以去排查,求大佬指引方向。
运行 php -v 和 php -m ,看下有问题的服务器是不是php版本不一致或者装了什么特别的扩展。