问题
maxTasksPerProcess默认200,项目配置的是1000,导致在转换大文件的时候内存一直不释放,最终程序崩溃。只有重启服务或杀掉soffice.bin进程才进行释放。并发情况下存在重大问题。
关键配置属性maxTasksPerProcess
这个属性描述的是:单个office进程在文件转换达到指定转换文件个数(maxTasksPerProcess)的时候,将会重启。
kkFileView内部代码
执行完一个文件,taskCount++。
taskCount = maxTasksPerProcess 就会重启
解决方案
- 可以将maxTasksPerProcess配置改小一点。
- 修改代码。
修改代码方案
修改代码思路:单个office进程在进行转换文件的时候,当转换到一定的字节大小时,进行重启
- OfficeTask接口增加一个获取当前转换文件的接口
- 其次在AbstractConversionTask抽象类中增加具体实现
- 修改execute执行判断逻辑,这时maxTasksPerProcess属性就不是文件转换的个数了,而是单个office进程能够转换字节大小。如果小于指定大小,则进行累加,直至大于等于配置,重启。