我在同一个blob服务中有两个容器。一个包含单个VHD,另一个包含单个测试PDF。
在VHD所连接的VM中运行一个进程,我得到以下数字。
VHD读取:
// VHD = e: drive, copy files
using (FileStream fs = new FileStream(@"e:\various\14681.pdf", FileMode.Open))
using (var mstream = new MemoryStream())
{
byte[] buffer = new byte[32 * 1024];
int bytesRead;
while ((bytesRead = fs.Read(buffer, 0, buffer.Length)) != 0)
{
mstream.Write(buffer, 0, bytesRead);
}
}
// 20MB file = 250ms, 250k file = <1msblockBlob.DownloadToStream:
//read blob
//CloudBlockBlob blockBlob = container.GetBlockBlobReference("14681.pdf");
using (var mstream = new MemoryStream())
{
blockBlob.DownloadToStream(mstream);
}
// 20MB file = 700-800ms, 250k file = 40ms为什么这两个进程的性能会有如此大的差异
发布于 2017-03-30 02:00:53
那么,当你访问存储blob时,你会通过公共互联网(甚至不是内部),所以这会增加延迟,而当你访问VHD时,你会通过Azure主干(虚拟机管理程序会为你做这件事)。
我推测这是主要原因。
https://stackoverflow.com/questions/43100040
复制相似问题