我已将现有的asp.net web-api从Azure VM(本地安装了IIS和MSSQL)迁移到Azure Web应用程序和Azure SQL数据库(西欧)。我注意到,对于相同的工作负载,两者之间的处理持续时间会急剧增加。在VM上占用10-15ms的任务,在托管服务环境中至少需要150ms。内部处理,不包括往返于vm或web应用程序的网络延迟。两者都有空数据库和相同的代码库。具有相同索引的相同数据库模式。
VM是一款简单的2核/ 7GB SSD机器。但即使我将我的网络应用程序设置为高级4核/ 7GB而我的数据库设置为高级250DTU,性能也不会提高。事实上,它在基本的2核web应用程序和10DTU数据库上是相同的。所以瓶颈必须在其他地方。
我如何找出造成缓慢处理的原因?网络应用程序和数据库没有显示任何性能警报,也没有建议扩展。
答案 0 :(得分:0)
每个会话/工作负载运行以下查询,以了解在这些工作负载期间发生的等待类型:
- 您的查询
go
select *
from sys.dm_exec_session_wait_stats
where session_id = @@spid
order by wait_time_ms desc
最后一个SELECT语句将为您提供当前会话的所有等待。
您还可以启用查询存储。
http://www.sqlcoffee.com/Azure_0010.htm
运行以下查询以了解查询在执行期间等待的原因
select wait_category_desc, sum(total_query_wait_time_ms) as [sum ms], count(*) as [interval cnt], avg(avg_query_wait_time_ms) as [avg ms], sum(total_query_wait_time_ms / avg_query_wait_time_ms) as [wait cnt]
from sys.query_store_wait_stats
group by wait_category_desc
order by [sum ms] desc
以下文章将告诉您每个等待类别的含义。
希望这有帮助。
答案 1 :(得分:0)
我今天也遇到了同样的问题:Azure Web App
和Azure DB
导致与数据库交互的任何事物的性能下降。
但是,当我在个人计算机上本地运行该应用程序时,体验非常快。因此,我检查了我的应用服务和位置。我正在使用美国的S1服务和澳大利亚的数据库。
•因此,我升级到了Premium S2 和
•将我的Web应用程序和数据库定位在同一区域。
这两个更改导致性能大大提高。
如果我是另一个问题的相同答案的原作者,并且答案是否正确且正确,我不确定为什么我的上一个答案重复是一个问题。仅仅因为改变它是没有意义的。请先发表评论,让我进行编辑,然后再完全删除...