我有一个ASP.NET 4.5,一个繁琐的Web应用程序,它托管在一个大型(4核7GB)Azure VM上。 WEB应用程序通过专用WCF服务松散地耦合到数据层。应用程序数据库由另一个大型(4核7GB)Azure VM上的专用SQL Server实例托管。 WCF端点通过使用DB VM公共DNS名称的ASP.NET连接字符串与DB VM进行通信 - 例如, xyz.cloudapp.net。
WEB和DB虚拟机似乎都在不同的子网中运行,但两者都在同一个Azure位置;不同的秒和后八位值。
在一个中型(2核3.5GB)Azure VM上运行完全相同的解决方案时,延迟问题要低得多。
我正在寻找有关如何尽可能减少WEB到DB延迟的建议。
答案 0 :(得分:3)
听起来好像你有两个VM在两个独立的云服务中运行。我可以建议将两台机器放在同一个云服务中吗?这应该允许您通过短DNS名称(也称为服务器名称)从Web层访问数据库服务器。这不仅可以通过允许您删除在其上声明的任何输入端点来帮助保护数据库服务器,还可以减少延迟,因为调用将直接从一个VM调用到另一个VM而不通过Azure Fabric负载均衡器(这是所有呼叫到达云服务URL的前端。
答案 1 :(得分:2)
如果同一数据中心内有两台需要相互通信的虚拟机,请不要使用其公有DNS。创建一个Affinity Group,在该关联组中创建一个虚拟网络,然后将两个VM放在虚拟网络中(您可能需要关闭它们,删除它们而不删除它们的VHD,然后从新的数据磁盘创建它们) VNET)。 通过DNS(因此通过Azure LB)访问VM会为每个请求增加约0.5毫秒的延迟 - 不建议用于聊天应用。