【问题标题】:ulimit issue with spring boot and Files.niospring boot 和 Files.nio 的 ulimit 问题
【发布时间】:2021-04-22 00:06:00
【问题描述】:

我们正在我们的一个项目中使用 Spring Batch 和集成

我们使用 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 应用程序以解决此问题。有什么想法/建议可以解决这个问题?

【问题讨论】:

  • 你可以尝试关闭一些文件....
  • nio.File 包应该已经这样做了吧?

标签: spring spring-boot spring-integration java.nio.file


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2018-12-09
    • 2019-03-25
    • 2023-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-23
    • 2016-11-11
    相关资源
    最近更新 更多