骆驼文件消费者的行为极慢,同时从目录中消耗大量文件



我正在使用Switchyard,这是Apache骆驼上的包装器。我的文件消费者从编写大量文件(有时为2,000,000次(的目录中消费。我的消费者的理想消耗速度是每秒1000多个文件,但是当写出50000多个文件时,我的消费者会变得慢,并且消耗速度降低了5次。

我已禁用了分类选项,甚至启用了Shuffle选项。但是没有运气。这是我的文件绑定细节。

    <file:binding.file name="XXXXXXXXXXXX">
    <file:additionalUriParameters>
      <file:parameter name="antInclude" value="*.xml"/>
      <file:parameter name="consumer.bridgeErrorHandler" value="true"/>
      <file:parameter name="shuffle" value="true"/>
    </file:additionalUriParameters>
    <file:directory>directory path</file:directory>
    <file:autoCreate>false</file:autoCreate>
    <file:consume>
      <file:delay>100</file:delay>
      <file:maxMessagesPerPoll>20</file:maxMessagesPerPoll>
      <file:delete>true</file:delete>
      <file:moveFailed>directory path</file:moveFailed>
      <file:readLock>markerFile</file:readLock>
    </file:consume>
    </file:binding.file>

即使在入口目录中有大量文件,我如何使消费者保持相同的消耗速度/秒/秒?

您的配置告诉骆驼:

  • 轮询每秒10次(延迟= 100 ms(
  • 每次阅读最多20个

所以,我希望您每秒收到约200个文件?

设置文件:maxMessagesPerPoll=200

当然,假设您的所有下游处理都可以处理额外的负载。

@conffusion上述评论,您正在整理文件列表。因此,这可能会创建所有文件的列表,然后将其调整并为您提供所需的数字。您真的需要作为您要求的一部分吗?

本质上...播放每个文件参数,看看它对它产生了什么影响。

我建议文件系统的性能是单个文件夹中许多文件的根本原因。

您应该能够使用OS中的标准工具来验证此假设 - 例如Linux上的ls或Windows上的dir。只需比较具有所有这些文件创建的所有文件的命令的执行时间。

至于解决方案 - 我建议将这些文件分配到该子目录中,如此答案中的NTFS性能和大量文件和目录问题所述。

相关内容

最新更新