Нужен совет по улучшению производительности загрузки ftp в C # - PullRequest
1 голос
/ 16 августа 2010

Я пишу программное обеспечение, которое загружает и скачивает несколько файлов с использованием ftp с удаленного сервера.Скорости загрузки в порядке и остаются неизменными на уровне выше 4 Мбит / с.Небольшие загрузки происходят мгновенно.Проблема, с которой я сталкиваюсь, - когда моя программа загружает большой 40-мегабайтный zip-файл, у меня очень низкая производительность.Кажется, что он загружается пакетами (100-200 Кбит / с), затем задерживается на секунду и делает это несколько раз, пока файл не завершит загрузку.Программная загрузка файла с одного и того же сервера занимает 30 секунд, загрузка того же файла на тот же сервер с использованием filezilla занимает примерно столько же времени.Загрузка через программное обеспечение может занять до 15 минут.Что-то явно не так.

Я использую библиотеку starksoft ftp для загрузки / выгрузки отсюда: http://starksoftftps.codeplex.com/

Вот пример проблемного кода:

    FtpClient ftp = new FtpClient(sourcecfg.Host);
        ftp.MaxUploadSpeed = 0;
        ftp.MaxDownloadSpeed = 0;
        ftp.FileTransferType = TransferType.Binary;
        ftp.DataTransferMode = TransferMode.Passive;
        ftp.Open(sourcecfg.FtpUserName, sourcecfg.FtpPassword); 
        ftp.PutFile(backupTempPath, targetcfg.getFullPath() + "wordpress-backup.zip",  FileAction.Create);                

Я также пытался использовать перегруженную версию PutFile, которая принимает объект Stream вместо строки пути.Результаты не изменились.

Происшествия: я компилирую в Visual C # Express 2008 в WinXP внутри экземпляра VirtualBox.Я пробовал и отладочный, и производственный exe-файлы без изменений в результатах.

Проблемы напоминают проблему буферизации или регулирования, но, глядя на внутренний код классов ftp, я не вижу ничего необычногои я специально настраиваю его не на газ.Любые предложения или комментарии об этой конкретной библиотеке компонентов ftp?

1 Ответ

2 голосов
/ 16 ноября 2010

Может быть интересно узнать, является ли соединение, использующее FileZilla, соединением в активном режиме или соединением в пассивном режиме.Другие вещи, представляющие интерес, будут пытаться загрузить файл с помощью FTP-клиента, который показывает диалог между клиентом и сервером.Я не уверен, будет ли FileZilla показывать вам эту информацию или нет.

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