Мое приложение требует загрузки файла из корзины GCS. Я могу загружать файлы из GCS, используя метод StorageClient DownloadObjects. Но выступление действительно медленное. для файла размером 50 МБ это занимает 3-4 минуты, и это время зависит от большой разницы во времени. Найдите образец кода и дайте мне знать, как я могу улучшить скорость загрузки?
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);
}
}
Проблема с задержкой может исходить от приложения, сети (вашей или Google) или службы облачного хранилища. Чтобы определить основную причину, выполните следующие действия:
mtr -4 -n -r -c 10 www.googleapis.com
gsutil perfdiag -o output.json gs://your-bucket
Если результаты показывают хорошие показатели, то стоит попробовать скачать файл асинхронно. Наконец, вот несколько советы по оптимизации производительности облачного хранилища.