php workerman内存溢出,使用tp5结合workerman搭建聊天室;正常运行约24小时后,命令行报错提示内存溢出,请问这是哪里出了问题?...

问题描述:

workerman启动正常,并且客户端可以正常收发消息;但是长时间连接后就会出现内存溢出的现象。

在这之前还遇到过一个问题是workerman正常运行8小时后,会报Error while sending QUERY packet PID=xxxx的错误,在排查之后发现是tp5的数据库缓存机制,8小时后会自动断开连接。在数据库配置文件配置允许断线重连后这个问题解决了,接下来就出现了刚刚描述的错误。

错误信息:

PHP Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 24 bytes) in E:\phpStudy\WWW\study\thinkphp\library\think\db\Connection.php on line 766

运行环境及框架版本:

Windows Server 2016

php 5.6.27

apache 2.4.18

mysql 5.5.53

thinkphp 5.1.0

workerman 3.5.1

尝试过的方案:

之前有想过单独从workerman的方向单独去查找原因,但是找了一圈没有人遇到过和我类似的错误;

一开始以为是连接数过多导致内存溢出,但是我测试过同时600个客户端连接都没有导致崩溃(这个程序用户高峰期差不多就这个数);然后又检查过是不是因为用户断开连接后没有做释放内存的操作,发现用户断开后其标识符是被释放掉了的。

遂想要从tp5的方向查找,我想知道是不是因为数据库配置允许了断线重连,长时间连接导致内存溢出。但是不允许断线重连的话8个小时又达不到内存溢出的要求,所以这个方法不能测试出是不是断线重连导致的溢出。

排查一圈无果,想问问有没有人遇到过和我类似的问题。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值