前段时间接到一个openCv的去除水印的需求,在chatgpt的帮助下,成功上线。上线没多久,内存暴涨,作为杂鱼的我紧急排查。(短期重启服务器解决) 1.首先把dump文件拉下来,发现并没有大对象 2.把gc日志拉下来看下,也没有什么异常,继续排查
- mat很多没有关闭,gpt背锅,给我的代码都没有关闭,统统关闭。再次发到测试环境,压测,内存还是暴涨。开始怀疑自我,是不是不是这段代码影响的。
- 奇了怪了,统统关闭还是有问题,是不是不是这个openCv这段代码的问题,注释掉,再次压测,内存正常。原因确认,就是这段代码的问题。
- 再次回看代码逻辑,伪代码如下
// mmpeg 拆出音频
// openCv 打开video
// 去除水印
// 合并音频 上传至oss
只能一段段排查了,
- 把mmpeg注释掉,压测,内存依旧暴涨
- 去除水印注释掉 压测,内存依旧暴涨
这样来看,打开video就会导致内存暴涨。说明根本没有释放掉。我去跟领导反馈 2种方式 1.换一个新的openCv版本试下 2.改到python里面