ulimit spring boot和files.nio问题

3npbholx  于 2021-07-14  发布在  Java
关注(0)|答案(1)|浏览(343)

我们在一个项目中使用spring批处理和集成
我们使用spring集成来轮询和监视一个目录;当文件进入目录时,我们记录并移动到另一个目录
这就是我们监控的方式

@Bean
    @InboundChannelAdapter(value = "fileChannel", poller = @Poller(fixedDelay = "1000"))
    public MessageSource<File> fileReadingMessageSource() {
        FileReadingMessageSource sourceReader= new FileReadingMessageSource();
        sourceReader.setDirectory(new File(INPUT_DIR));
        sourceReader.setFilter(new SimplePatternFileListFilter(FILE_PATTERN));
        return sourceReader;
    }

一旦一个文件被轮询,我们将使用下面的函数移动一个diff temp目录

Files.move(source, destination, REPLACE_EXISTING);

在unix框中,文件被复制到复制之后,即使在我们处理之后,我们仍然可以看到io文件引用..这导致容器上打开的文件太多
我使用以下命令验证io连接的方法仍然存在:

lsof -u <userid> | grep <file_name>

目前,我们正在重新启动springboot应用程序,作为解决问题的一种方法。有什么想法/建议来解决这个问题吗?

xxhby3vn

xxhby3vn1#

显然你有一些逻辑 fileChannel 打开一个 InputStream 以便文件读取其内容。你看了之后就不关了。这个 Files.move() 与打开/关闭文件资源无关。查看其javadocs。

相关问题