Потребитель верблюжьих файлов ведет себя крайне медленно, потребляя большое количество файлов из каталога - PullRequest
0 голосов
/ 08 мая 2019

Я использую коммутатор, который является оберткой над верблюдом Apache. Мой потребитель файлов использует каталог, в который записано большое количество файлов (иногда 2000000). Идеальная скорость потребления моего потребителя составляет 1000+ файлов в секунду, но при записи более 50000 файлов мой потребитель замедляется, а скорость потребления уменьшается в 5 раз.

Я отключил опцию sortBy и даже включил опцию перемешивания. Но не повезло. Вот моя деталь привязки файла.

    <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>

Как я могу заставить своего потребителя поддерживать такую ​​же скорость потребления 1000 файлов в секунду, даже если во входящем каталоге находится большое количество файлов?

Ответы [ 2 ]

1 голос
/ 08 мая 2019

Ваша конфигурация сообщает Camel:

  • опрос 10 раз в секунду (задержка = 100 мс)
  • чтение максимум 20 каждый раз

Итак, я ожидаю, что вы получаете около 200 файлов в секунду?

Установить файл: maxMessagesPerPoll=200.

Конечно, предполагается, что вся ваша последующая обработка может справиться с этой дополнительной нагрузкой.

Как прокомментировал @Conffusion выше, вы перетасовываете список файлов.Таким образом, это, вероятно, создает список всех файлов, затем перетасовывает его и дает вам номер, который вы просили.Вы действительно нуждаетесь в этом как часть вашего требования?

По существу ... поиграйте с каждым из параметров файла и посмотрите, какое влияние он оказывает.

0 голосов
/ 08 мая 2019

Я бы предположил, что производительность файловой системы является основной причиной того, что столько файлов в одной папке.

Вы должны быть в состоянии проверить эту гипотезу, используя стандартные инструменты из вашей ОС -как ls в Linux или dir в Windows.Просто сравните время выполнения команды, в которой созданы все эти файлы.

Что касается решения - я бы предложил разбить эти файлы на подкаталоги, как описано в этом ответе до Производительность NTFS.и большие объемы файлов и каталогов вопрос.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...