c# – Azure Web应用程序的慢速数据库连接
我开发了一个Web应用程序标准Web应用程序,允许用户显示和更新SQL数据库中的一组数据.
Web应用程序使用AngularJS客户端,它通过MVC Web API调用与Web服务器交互,以检索和更新数据库上的数据. Web应用程序托管在Azure Web App中. 问题是,当应用程序未使用大约10-15分钟时,再次使用它,第一次数据检索通常需要10秒以上才能返回浏览器.之后,性能良好,直到下次应用程序未使用. 我在应用程序中添加了跟踪,我们看到延迟是连接打开的时间.数据库上的实际查询运行亚秒级. 我注意到,虽然使用不同的主机配置我得到了不同的结果.特别是在内部托管并指向Azure数据库不会遇到任何接近相同延迟的地方. 我已经改变了其中一个例程来使用ADO.NET而不是实体框架,并更改了跟踪以尝试进一步缩小范围. 我看到的是: ConnectionStringSettings ADOcnxstring = ConfigurationManager.ConnectionStrings["DevFEConnectAdo"]; DbConnection ADOconnection = new SqlConnection(ADOcnxstring.ConnectionString); 延迟就在这里(在SQL被定义之前! 然后我构建命令并执行DataReader等: DbCommand ADOcommand = ADOconnection.CreateCommand(); : etc 因此,延迟是打开与数据库的连接. 我的连接字符串是标准的: <add name="DevFEConnectAdo" connectionString="data source=feeunsqldevfeconnect.database.windows.net;initial catalog=feeunsqldbdevfeconnect;persist security info=True;user id=??? @???;password=???;multipleactiveresultsets=True"></add> 解决方法
15分钟太短,您的应用程序无法回收(如CSharpRocks所建议).我不认为这里的问题.
延迟是因为在空闲超时后第一次调用时建立了新的Db连接.通常,如果连接在4-10 minutes处于非活动状态,则将关闭.如果指定了最小池大小,则即使在空闲时间到期后,这些连接也将保持活动状态. 尝试使用此连接字符串(根据您的需要调整最小池大小) <add name="DevFEConnectAdo" connectionString="data source=feeunsqldevfeconnect.database.windows.net;initial catalog=feeunsqldbdevfeconnect;persist security info=True;user id=??? @???;password=???;multipleactiveresultsets=True;Min Pool Size=3;Load Balance Timeout=180;"></add> 更多详情 SQL连接属性列表 – documentation (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |