c# - 改善 Azure 网站到 Azure VM 的网络延迟

标签 c# sql-server azure latency azure-virtual-machine

我有一系列 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/

相关文章:

c# - 如何从 NpgsqlDataReader 获取行数

c# - 处理 SQL Azure 数据库副本

sql-server - SSIS 平面文件源行重构

mysql - 不同数据库厂商如何存储数据库的元数据

具有多个索引的 Azure 搜索

c# - 数据绑定(bind)到 asp.net 中的 Bootstrap 表

c# - 依赖 DLL 未被复制到 Visual Studio 中的构建输出文件夹

sql-server - 无法在 Visual Studio Team System 2008 中调试 SQL Server 2005 存储过程

c# - HttpContext.Current.User 对于无状态 session 安全吗?

azure - 当我在 Azure 中发布天气预报 API 时出现 500 错误,如何调试?