飘狐 2022-04-02 09:42 采纳率: 0%
浏览 150

java 多线程程序越运行越慢

问题遇到的现象和发生背景

最近开发一套视频切图程序,功能是读入FTP视频按秒切成图片存入数据库,采用的切图技术是javacv,为了提高效率程序每次取10个视频,每个视频启动一个线程来处理,启动线程我采用了ThreadPoolExecutor做线程池,但在运行时发现程序越运行越慢,我每个小时都会监控一下处理效率,发现效率呈现递减趋势发展开始衰减不多,但运行到30几个小时的时候程序效率就极其低下了,线程好像不动了正常情况一小时能够处理10小时视频,而后来一个两小时才能处理一个小时视频(服务器逻辑核56 颗cpu,内存125G)。

问题相关代码,请勿粘贴截图

我用jmap命令导出了dump,发现点问题但对优化经验不足个人觉得是些小问题不会影响这么大,下面我也贴出来大家看看

img

img

img

运行结果及报错内容

运行结果就是慢,日志并无报错

我的解答思路和尝试过的方法

一开始我没有采用线程池,以为是这个原因后来改成了线程池问题仍然没有得到改善,请各位高人帮我分析一下问题可能出现的原因或者怎样进一步排查,这个问题已经困扰我十多天了,万分感谢

  • 写回答

4条回答 默认 最新

  • 编号灬9527 2022-04-02 09:57
    关注

    按秒切图存图到数据库,你这个方案团队讨论过吗?
    先不直接存图片,文件存第三方服务或者本地磁盘,库里面存个地址,看看这种处理,长时间运行后,是不是还是效率低下

    评论

报告相同问题?

问题事件

  • 创建了问题 4月2日