【问题标题】:Downloading file from GCP is too Slow using C#使用 C# 从 GCP 下载文件太慢
【发布时间】:2019-11-12 17:21:50
【问题描述】:

我们正在尝试从 GCP 存储桶控制台下载文件,但性能确实很慢。即使是 50 MB 的文件也需要大约 2 到 3 分钟,而且变化范围也很大。我们使用的是 storageclient 下载对象方法

我们已经为 GCP 上传提供了一个有效的代码,它可以更快地上传 GB 的文件。下载时是否存在特定问题。

我们使用 C# 代码进行上传和下载。

class Program
{
    public static void Main(string[] args)
    {
        GoogleCredentials gcpCreds = new GoogleCredentials()
        {
            private_key = "-----BEGIN PRIVATE KEY-----PrivateKey-----END PRIVATE KEY-----\n",
            client_email = "client_email",
            type = "service_account"
        };

        var credentials = GoogleCredential.FromJson(JsonConvert.SerializeObject(gcpCreds));

        // var credentials= GoogleCredential.GetApplicationDefault();
        var storage = StorageClient.CreateAsync(credentials).Result;
        string localPath, directoryPath, localFileName, objectName, bucketName;
        directoryPath = "localpathstring";
        objectName = "SourceFileName";
        localFileName = objectName;
        localPath = directoryPath + "\\" + localFileName;
       bucketName="bucketName";

       FileStream fs = new FileStream(localPath, FileMode.OpenOrCreate);

        //Code to download with progress bar
        DownloadObjectOptions option = new DownloadObjectOptions();
        using (fs)
        {
            var progress = new Progress<IDownloadProgress>(
                 p => Console.WriteLine($"bytes: {p.BytesDownloaded}, status: {p.Status},"));
            storage.DownloadObject(bucketName, objectName, fs, option, progress);
            }
     }

【问题讨论】:

  • 你还没有发布任何代码,所以人们怎么能猜出哪里出了问题?慢的不是 C#
  • we are using storageclient downloadobjects method 这不是代码
  • 在任何情况下,如果您在同一行上只有 1 次上传但有 1000 次下载,下载会很慢。至少使用 Fiddler 之类的调试代理来查看实际情况。也许有很多重试?或者代码忘记关闭下载流并迅速达到并发连接限制?或者您的 ISP/网络管理员可能限制了您的连接?
  • 代码已添加
  • 使用“慢”这个词没有任何意义。使用事实,例如我的 Internet 连接速度是 X,我可以在 Z 处从 Y 下载。我的程序在 A 处下载。提供详细信息以便我们为您提供帮助。在 180 秒内下载 50 MB 的文件是 2.2 Mbit/秒。根据您的 Internet 连接、到源的距离和网络利用率,这些数字可能很大,也可能不是。

标签: c# google-cloud-platform


【解决方案1】:

下载速度的结果对我来说一点也不奇怪。 Cloud Storage 有一种运行机制,可以使较大的文件比较小的文件下载得更快。例如,如果您尝试下载 10 GB 的文件,您会发现性能会大大提高。

对于这个 50MB 的下载用例,我认为没有太多需要改进的地方,但总的来说,提高下载整体速度的一个好方法是在发出的请求数量和大小之间找到一个平衡点其中。你可以找到一篇关于提高 GCS 性能的好文章here

此外,由于制作了一些experiments,使用gsutil tool 可以获得更好的性能,而不是简单的HTTP 请求。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-05
    • 1970-01-01
    • 2013-03-25
    • 2020-03-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多