在我的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角色(比如說)都柏林正試圖從新加坡(比如說)獲取數據。 –