mat*_*mmo 11 concurrency azure database-concurrency azure-sql-database
只是想通过大家来运行这个,看看是否有任何明智的想法,因为我已经用尽了所有的想法,经过一整天,晚上和早上的搜索.在并发使用(硒测试)时,我们遇到的问题总是围绕数据库连接,例如超时,丢弃/关闭连接,数据库服务器无法访问.
该问题似乎仅限于Azure,因为即使在指向同一数据库(SQL Azure)的相同代码上运行相同的selenium测试,我们还没有在本地遇到此问题,因此它会指出它出现问题SQL Azure中的数据库连接.到目前为止,我们尝试了以下内容:
更改了设计模式 - 我们甚至花了很长时间来实现工作单元设计模式,其中数据库连接在每个工作单元之后被启动和处理但是这导致了其他地方的延迟加载问题,将对象传递给方法并且它在这一点上,返工会过于庞大.
更改角色大小 - 我能想到的最后一件事就是在Windows Azure中存在任何隐式连接限制的情况下提升角色大小 - 目前正在进行部署,因此它仍有一半的可能性!
站点基础结构如下:
任何帮助将不胜感激.
更新:我们将VM大小提升到中等,它所做的只是意味着同一个问题花费的时间更长.
当问题开始发生时,团队成员注意到发生了以下异常:
InvalidOperationException:执行命令需要打开且可用的连接.连接的当前状态被破坏.
每当数据库被命中时(这不是特定于某个代码区域),就会发生这种情况.
我之前遇到过这种问题.在我的情况下,它与实体框架ObjectContexts没有被正确处理,在最终太多的上下文被旋转并且网站被推翻之前.我们使用Entity Framework Profiler确定在抛出错误时有很多未闭合的ObjectContexts.
我们不可能转移到工作单元设计模式(或类似),因为它需要重写业务层,因此,我们通过在每个页面请求后手动关闭ObjectContexts来解决它.我们采用了在Global.asax的End Request事件中手动处理上下文的方法,但是,其他有效的方法是将上下文存储在HttpContext中,或者使用"每个请求"实现IoC容器(例如Castle Windsor) " 生活方式.