我有一系列 Azure 网站
,它们部署到与运行 SQL 服务器的 Azure VM
相同的资源组
,只要我之前了解到,这就是确保您的流程在地理位置上彼此接近所需的全部内容。
但是我遇到了一些严重的性能问题。运行像这样的简单代码时使用 Entity Framework
var result = await Context.Settings.Where(o => o.Name == name).FirstOrDefaultAsync();
或者像
这样简单的东西var result = await context.Categories.Include(o => o.ParentCategory);
或者以上的某种组合,我的本地开发设置和生产系统之间的平均性能差异是 400%。这种差异在不同类型的查询中似乎相当一致,并且在问题上投入了更大的虚拟机,这显然不是硬件问题,因为它没有任何影响。虽然我预计会有一些网络延迟,但这似乎非常高。
我做错了什么?如果有人能够提供 Azure 网站和 Azure VM 之间通信的最佳实践以及如何改善延迟的详细信息,我将不胜感激。
旁注:在我的研究过程中,我发现您可以创建 Azure 虚拟网络
(并假设这可能是解决方案的一部分),但我看不到移动或关联虚拟网络的方法。网站到这样的虚拟网络上。
最佳答案
马克西姆。 我已经看过这个评论好几次了。 Microsoft 发布了一些在 Azure 中使用 Entity Framework 的指南。您可以在这里找到它:
https://msdn.microsoft.com/en-us/library/cc853327(v=vs.110).aspx
这可能不是您问题的最佳答案,但我相信它应该对您有很大帮助。这对我来说确实如此。
此外,如果可能的话,我会考虑一种温和的 CQRS 实现,这样您就可以创建两个上下文对象,一个用于写入,另一个用于读取。在只读上下文中,您可以关闭 EF 中的跟踪,这显着提高 EF 的整体读取性能。
// In your READ context, do this in the constructor
context.Configuration.AutoDetectChangesEnabled = false;
我希望这些对您有所帮助。
关于c# - 改善 Azure 网站到 Azure VM 的网络延迟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37649630/