socket.io 运行一段时间报内存溢出

mazhaozi

WORKER EXIT UNEXPECTED E_ERROR Allowed memory size of 134217728 bytes exhausted (tried to allocate 65536 bytes) in workerman/workerman/Connection/TcpConnection.php on line 372

一般是什么情况

5958 2 0
2个回答

walkor 打赏

我这里的文件和你的不一致
贴下你的 workerman/workerman/Connection/TcpConnection.php 372 那几行的代码看看。

出现这个问题原因一般有三种
1、可能是业务代码有内存泄漏,比如使用全局数组存储数据,数组一直增加元素但是从不删元素除等等
2、业务传输数据量很大,但是客户端接收很慢,导致数据积压在内存。例如向1000人广播一个1M大小的数据包,那么最差的情况,服务器内存瞬间增加1G。这种情况可能要适当增加php内存限制(php.ini中的memory_limit),并且优化业务,避免广播巨大的数据包。
3、phpsocket.io本身可能有内存泄漏。phpsocket.io本身机制比较复杂,可能某些用法会有内存泄漏,建议使用workerman或者GatewayWorker,workerman和GatewayWorker非常稳定,不会有内存泄漏。

  • 暂无评论
mazhaozi

好的 我排查一下

  • 暂无评论
年代过于久远,无法发表回答
×
🔝