【发布时间】: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 连接、到源的距离和网络利用率,这些数字可能很大,也可能不是。