#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 удаленных файлов в ответ, а клиент сообщает как есть.