GCS GoogleCredential

GCS GoogleCredential

我的应用程序需要从 GCS 存储桶下载文件。我可以使用 StorageClient DownloadObjects 方法从 GCS 下载文件。但性能真的很慢。对于 50MB 的文件大小,需要 3-4 分钟,并且这个时间会因时间差异而有很大差异。请查找示例代码并告诉我如何提高下载性能?

类程序 { 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);

        }
 }

答案1

您遇到的延迟问题可能来自应用程序、网络(您自己的或 Google 的)或云存储服务。要确定根本原因,请遵循以下步骤:

  1. 跑步地铁发送 2 次到 Cloud Storage 端点,以确定网络上是否/在哪里观察到延迟。命令示例:mtr -4 -n -r -c 10 www.googleapis.com
  2. 直接使用 gsutil 下载文件确定问题是否出在应用程序端。
  3. 使用以下方式运行性能诊断“perfdiag” gsutil 命令确定 Cloud Storage 方面是否存在任何问题。命令示例:gsutil perfdiag -o output.json gs://your-bucket

如果结果显示指标健康,那么值得尝试异步下载文件. 最后,这里有一些优化云存储性能的技巧

相关内容