Azure中的2个相同网站,它们具有相同的设置。 两者都在标准模式下运行,实例大小为Small。没有自动缩放。
一个网站在北欧地区运行,另一个在西欧。
我在网站上遇到25%的性能差异。西欧是“慢慢的”#。
贝娄是我为检查表现而进行的简单压力测试。
public ActionResult StressTest(int loopCount, int dbLoopCount)
{
var sw = new System.Diagnostics.Stopwatch();
sw.Start();
if (user.IsAdmin)
{
var hashTable = new Hashtable();
var list = new List<int>();
var random = new Random();
for (var x = 0; x <= loopCount; x++)
{
list.Add(x);
for (var i = 0; i <= loopCount; i++)
{
hashTable[i] = list.Where(d => d == random.Next(0, x)).Count(); ;
hashTable[i] = list.Where(d => d == random.Next(0, x)).Count(); ;
hashTable[i] = list.Where(d => d == random.Next(0, x)).Count(); ;
hashTable[i] = list.Where(d => d == random.Next(0, x)).Count(); ;
hashTable.Remove(i);
}
}
}
sw.Stop();
var loopTime = sw.ElapsedMilliseconds;
sw.Restart();
#region DBLoop
.........
#endregion
sw.Stop();
var dbTime = sw.ElapsedMilliseconds;
return Json(new
{
WS = new
{
Loops = loopCount.ToString("N0"),
Seconds = (loopTime / 1000.0),
Milliseconds = loopTime
},
DB = new
{
Loops = dbLoopCount.ToString("N0"),
Seconds = (dbTime / 1000.0),
Milliseconds = dbTime
}
}, JsonRequestBehavior.AllowGet);
}
数据库服务器是Linux和MongoDB的VM。西欧的VM比北欧的VM慢约35%。由于Linux发行版,分区和副本设置不同,测试不如网站测试有效。很难用任何设置因素来解释DB性能降低35%。我认为减速的25%与我在网站上看到的减少量相同是很诱人的。
我删除了DB压力测试代码,它只包含简单的读取/计数。 记录:我在西欧创建了2个不同的网站,性能较慢是一致的。还有几天,我在星期二首次测试了这个,今天也是如此。
答案 0 :(得分:0)
欢迎来到公共云!嘈杂的邻居,资源限制,瞬态故障和未预见的硬件故障!
虽然所有服务(Azure和其他服务)都提供可用性上的SLA,但大多数服务都不会为服务提供最低性能阈值,除非将其作为高级权益特别出售(例如Azure Premium Storage可提供最低磁盘IOPS保证) 。提供商将根据您满足基本设计概念保证可用性,但很少提供有保证的性能。
您可以尝试在看起来很慢的DC中重新部署解决方案。这可能意味着您已部署到DC中的另一台主机,并避免出现嘈杂的邻居或遇到问题的主机。如果您发现重新部署无法解决问题,则可能需要打开有关此问题的支持服务单。
答案 1 :(得分:0)
我感觉不那么孤单......我经历了同样的事情jca。 差异很大,我的插入速度在北欧快了大约2倍。
我猜这是“正常的”。