微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

spring boot 和 Files.nio 的 ulimit 问题

如何解决spring boot 和 Files.nio 的 ulimit 问题

我们正在我们的一个项目中使用 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 临时目录..我们正在使用 java.nio.file.File

Files.move(source,destination,REPLACE_EXISTING);

文件被复制到复制后的unix框中,即使经过我们的处理,我们仍然看到IO文件引用..这导致容器上打开的文件过多问题

我使用以下命令验证 IO 连接的方式仍然存在:

lsof -u <userid> | grep <file_name>

目前,我们正在重新启动 Spring Boot 应用程序以解决此问题。有解决此问题的想法/建议吗?

解决方法

显然,您在 fileChannel 的下游有一些逻辑,它为文件打开一个 InputStream 以读取其内容。并且您只是在阅读后不关闭该流。 Files.move() 与打开/关闭文件资源无关。请参阅其 JavaDocs。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。