在我的Azure web角色OnStart()
我需要部署角色依赖的巨大的非托管程序。该程序先前被压缩成一个400兆字节的.zip压缩文件,分割成20 MB的文件并上传到一个Blob存储容器。该程序不会改变 - 一旦上传,它可以保持这种方式多年。为什么从Azure blob下载这么久?
我的代码执行以下操作:
CloudBlobContainer container = ... ;
String localPath = ...;
using(FileStream writeStream = new FileStream(
localPath, FileMode.OpenOrCreate, FileAccess.Write))
{
for(int i = 0; i < blobNames.Size(); i++) {
String blobName = blobNames[i];
container.GetBlobReference(blobName).DownloadToStream(writeStream);
}
writeStream.Close();
}
它只是打开一个文件,然后写入到零件一个一个。效果很好,但从单核(超小型)实例运行需要大约4分钟。这意味着平均下载速度大约为每秒1,7兆字节。
这让我很担心 - 它似乎太慢了。它应该如此缓慢?我究竟做错了什么?我能做些什么来解决部署中的问题?
显而易见的一个检查:确保您的Web角色和您的存储位于相同的关联组。否则,你可能会发现一个Web角色(比如说)都柏林正试图从新加坡(比如说)获取数据。 –