Apache Camel — задержка SFTP

#performance #ftp #apache-camel #sftp #latency

#Производительность #ftp #apache-camel #sftp #задержка

Вопрос:

Я использую Apache Camel для взаимодействия с несколькими конечными точками SFTP; для каждой из них я выполняю следующий конвейер:

  • извлеките список существующих файлов
  • проверьте эти файлы на соответствие заданному набору правил
  • загружайте удаленные файлы в случае успешной проверки

Все работает как по волшебству (примерно для сотни разных конечных точек), и URI, используемый для извлечения списка файлов, выглядит примерно так: sftp: // $ {HOST}: $ {PORT}/ $ {DIR}?username= $ {USER}amp;download=falseamp;recursive=trueamp;disconnect=trueamp;sendEmptyMessageWhenIdle=true

Проблема в том, что для одной из этих конечных точек SFTP компонент SFTP Camel ведет себя, альтернативно, следующим образом:

  • немедленно верните 0 удаленных файлов
  • требуется несколько минут, чтобы перечислить удаленный контент (который состоит примерно из 250 файлов, от 2 КБ до 2 МБ каждый)

Кроме того, в последнем случае загрузка занимает около 30 секунд, чтобы загрузить только 10 КБ данных.

Поскольку это происходит только на этом конкретном SFTP, я полагаю, что это напрямую не зависит от Camel, который отлично работает для всех других конечных точек.

Итак, мои вопросы:

  • что может повлиять на такое соединение, приводя к необоснованной задержке (нет проблем с сетью или больших данных для извлечения)?
  • предположим, это зависит от удаленной конечной точки SFTP, почему вышеупомянутый URI Camel должен немедленно возвращать 0 файлов, поскольку в SFTP существует множество файлов?

Спасибо за любые отзывы.

Ответ №1:

Давайте предположим, что в компоненте Camel SFTP вашей версии нет ошибки.


что может повлиять на такое соединение, приводя к необоснованной задержке (нет проблем с сетью или больших данных для извлечения)?

Учтите тот факт, что ваше приложение может немедленно вернуть 0 удаленных файлов, источник проблемы, существующий между вашим приложением и целевым сервером, относительно низок. На стороне сервера это может быть

  • Слишком много папок для обхода
  • Сервер медленно реагирует на каждый вызов
  • другая проблема на стороне сервера

Для случая (слишком много папок для обхода) рассмотрите возможность игнорирования бесполезных папок и другой конфигурации (например, пошаговой)

предположим, это зависит от удаленной конечной точки SFTP, почему вышеупомянутый URI Camel должен немедленно возвращать 0 файлов, поскольку в SFTP существует множество файлов?

На стороне сервера может использоваться несколько узлов сервера SFTP, а некоторые узлы пусты из-за сбоя синхронизации файловой системы. Когда клиент перенаправляется на любой пустой узел SFTP-сервера шлюзом на стороне сервера, серверный узел возвращает 0 удаленных файлов в ответ, а клиент сообщает как есть.