【问题标题】:Why is my ftp upload method so slow?为什么我的ftp上传方法这么慢?
【发布时间】:2012-12-25 14:49:22
【问题描述】:

我编写了一个控制台应用程序来从 FTP 下载文件,然后上传到不同的 FTP 位置。 文件下载大约需要 10 秒,但上传大约需要 6 分钟。 有 256 个文件,每个文件大小约为 5-30KB。这么小。

上传和下载的代码很相似,都是遍历目录下的所有文件然后上传。它相当简单,如下所示,它从 D:\LEV\ 文件夹迭代并上传文件到 ftp。

编辑:这是在 Azure“小型”Windows 虚拟机上运行的,所以我认为带宽不是问题? 此外,我正在使用 windows ftp.exe 上传的另一台虚拟机上执行相同的任务,它比我在同一台机器上的控制台应用程序快 2 倍。

有什么线索为什么它这么慢,或者有没有办法提高速度?

static public void Upload(string file1)
{        
    string upftpServerIP = "ftp://ftp.domain.co.uk/lev/";
    string upftpUserID = "username";
    string upftpPassword = "password";

    string uri = upftpServerIP + file1;
    Uri serverUri = new Uri(uri);
    if (serverUri.Scheme != Uri.UriSchemeFtp)
    {
       return;
    }
    FtpWebRequest reqFTP;
    reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(upftpServerIP + file1));
    reqFTP.Credentials = new NetworkCredential(upftpUserID, upftpPassword);
    reqFTP.KeepAlive = false;
    reqFTP.Method = WebRequestMethods.Ftp.UploadFile;
    reqFTP.UseBinary = true;
    reqFTP.Proxy = null;
    reqFTP.UsePassive = true;

    Console.WriteLine("Uploading " + file1);

    FileStream fs = File.OpenRead(@"D:\LEV\" + file1);
    byte[] buffer = new byte[fs.Length];
    fs.Read(buffer, 0, buffer.Length);
    fs.Close();
    Stream ftpstream = reqFTP.GetRequestStream();
    ftpstream.Write(buffer, 0, buffer.Length);
    ftpstream.Close();
}

static public string[] GetFileListUpload()
{
    string[] uploadFiles = Directory.GetFiles(@"D:\LEV\", "*.*", SearchOption.TopDirectoryOnly);
    return uploadFiles;
}

【问题讨论】:

  • 你的网速是多少?它是否有保证或尽力而为的带宽?
  • 嗨,好点。我使用的是 Azure“小型”虚拟机,因此我认为带宽不是这里的限制因素。
  • 您可能有良好的互联网连接,但是您尝试上传文件的远程 ftp 服务器呢?

标签: c# ftp ftpwebrequest


【解决方案1】:

这里有几个因素需要考虑:

  • 不保证您的互联网连接是对称的。大多数互联网连接计划(至少在我所在的地区)提供的上传带宽是下载带宽的 1/8。

  • FTP 服务器本身可能会限制传入连接的带宽。

  • FTP 服务器也可能会限制每次上传的最大带宽。在这种情况下,您将受益于多线程上传,一次上传多个文件。

【讨论】:

  • 我刚刚添加了一个编辑。我刚刚使用 windows ftp.exe 在不同的 VM(非天蓝色)上进行了另一项测试,它比我的控制台应用程序快 2 倍。
  • 要了解您的代码中是否有特定的原因导致速度变慢,或许可以尝试使用WebClient 进行上传,看看您是否获得了更好的结果。
猜你喜欢
  • 1970-01-01
  • 2012-12-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多