Azure BLOB ストレージに試用アカウントがあります。生成された 100000 個のファイルをローカル マシンからアップロードしようとしています。操作にはすでに 17 時間以上の期間があり、〜 77000 ファイルしかアップロードされていません。シンプルな bash スクリプトで作成されたすべてのファイル:
for i in {1..100000}
do
echo $i
echo $i > $1\\$i.txt
done
アップロードのコード:
using(var stream = File.OpenWrite(textBoxManyUploadFileName.Text))
using(var writer = new StreamWriter(stream)) {
foreach(var file in Directory.GetFiles(textBoxManyUploadFrom.Text)) {
Guid id = Guid.NewGuid();
storage.StoreFile(file, id, ((FileType)comboBoxManyUploadTypes.SelectedItem).Number);
writer.WriteLine("{0}={1}", id, file);
}
}
public void StoreFile(Stream stream, Guid id, string container) {
try {
var blob = GetBlob(id, container);
blob.UploadFromStream(stream);
} catch(StorageException exception) {
throw TranslateException(exception, id, container);
}
}
public void StoreFile(string filename, Guid id, int type = 0) {
using(var stream = File.OpenRead(filename)) {
StoreFile(stream, id, type);
}
}
CloudBlob GetBlob(Guid id, string containerName) {
var container = azureBlobClient.GetContainerReference(containerName);
if(container.CreateIfNotExist()) {
container.SetPermissions(new BlobContainerPermissions {
PublicAccess = BlobContainerPublicAccessType.Container
});
}
return container.GetBlobReference(id.ToString());
}
最初の 10000 個のファイルが 20 ~ 30 分でアップロードされ、その後速度が低下しました。ファイル名が GUID であり、Azure がクラスター化インデックスを構築しようとしていることが原因である可能性があると思います。スピードアップするには?何が問題ですか?