AzureWeb应用程序的慢速数据库连接我开发了一个标准的Web应用程序,它允许用户显示和更新SQL数据库中的一组数据。Web应用程序使用AngularJS客户端,它通过MVCWebAPI调用与Web服务器交互,以检索和更新数据库中的数据。服务器端代码使用.NET4.5以C#编写,并使用EntityFrameworkv6.0访问数据库。Web应用程序托管在AzureWebApp中。该数据库是AzureSQL数据库。问题在于,当应用程序大约10-15分钟未被使用,再次使用时,第一次数据检索通常需要10多秒才能返回到浏览器。之后,性能一直很好,直到下一次应用程序未被使用。我在应用程序中添加了跟踪,我们看到延迟是在连接打开时。对数据库的实际查询在亚秒级内运行。我注意到虽然使用不同的主机配置,但我得到了不同的结果。特别是在本地托管和指向Azure数据库时,不会遇到任何接近相同的延迟。我已将其中一个例程更改为使用ADO.NET而不是实体框架,并更改了跟踪以尝试进一步缩小范围。我看到的是:ConnectionStringSettingsADOcnxstring=ConfigurationManager.ConnectionStrings["DevFEConnectAdo"];DbConnectionADOconnection=newSqlConnection(ADOcnxstring.ConnectionString);延迟在这里(在SQL定义之前!然后我构建命令并执行DataReader等:DbCommandADOcommand=ADOconnection.CreateCommand();:等等,所以延迟是打开与数据库的连接。我的连接字符串是标准的:15分钟太短,您的应用程序无法回收(如CSharpRocks建议的那样)。我不认为这是问题所在。延迟是因为在空闲超时后的第一次调用时建立了新的Db连接。通常,如果连接是闲置4-10分钟,它将被关闭。如果指定了最小池大小,即使在空闲时间到期后,这些连接仍将保持活动状态。尝试使用此连接字符串(根据您的需要调整最小池大小)更多详细信息为什么我们需要在ConnectionStringSQL连接属性列表中设置最小池大小-文档一段时间后,终于在MicrosoftAzure支持问题的帮助下解决了这个问题。我缺少的细节是我的Web应用程序实际上指向2个数据库-1个应用程序AzureSQL数据库,我遇到延迟问题-由于内部数据库服务器,我们在Azure虚拟机上有一个“数据仓库”“数据仓库”、虚拟机和Web应用程序都在Azure虚拟网络中。问题是如果虚拟网络中的Web应用程序想要与AzureSQL数据库(不能在虚拟网络中)进行通信,可能是网络问题,我的解决办法是,此时所有的延迟都没有了,我可以取消MinPoolSize的设置(还有我后来发现的Timeout,反正是没有的),几分钟后不活动,Web应用程序将被回收。尝试在门户的设置/应用程序设置中启用“AlwaysOn”设置,看看这是否有助于解决您的问题。以上是C#学习教程的全部内容:AzureWebapplication缓慢的数据库连接共享。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。涉及侵权,请点击维权联系管理员删除。如需转载请注明出处:
