首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何找出.NET WebApi中偶有慢病的原因

如何找出.NET WebApi中偶有慢病的原因
EN

Stack Overflow用户
提问于 2022-02-21 13:23:21
回答 2查看 135关注 0票数 4

我正在研究aspnet方法(.NET 4.8,而不是核心)中偶尔出现的一些缓慢现象。其症状是,大多数情况下,API会在几十毫秒内做出响应,但有时需要几秒钟才能做出响应。

使用MiniProfiler,似乎大部分时间都用于执行SQL查询。然而,API执行几个查询,而且并不总是相同的,需要很长时间。这里是一个简短的屏幕截图的一个迷你剖析器跟踪为这样的要求。

看到这一点,我假设数据库执行某些查询的速度有时很慢,可能是在等待锁,但我能够捕获与使用扩展事件在概要文件上看到的相同的查询,并且显示查询实际执行得非常快(“持续时间”列以微秒为单位):

我知道这是同一个查询,因为参数是相同的,时间戳是一致的。无论如何,扩展事件捕获的所有查询都是快速的。

由此,我得出结论,原因不是Server。我想,WebApi端可能有一些资源耗尽,所以我检查了与线程池、sql连接池和垃圾收集相关的性能计数器,但是当这些缓慢的响应时间发生时,无法观察到任何相关的情况。

我的想法快用完了。当然,这个问题只发生在生产中,我无法在本地或在我们的测试环境中复制它。

如何识别这些延迟的原因?

EN

回答 2

Stack Overflow用户

发布于 2022-04-13 21:54:01

我认为您没有根据RPC已完成事件诊断Server是否慢所需的所有信息。该持续时间并不反映整个RPC过程的持续时间,只反映结束事件所用的时间。还有一个称为RPC启动的事件,您需要监视它,然后自己计算这两个事件之间的持续时间。

票数 3
EN

Stack Overflow用户

发布于 2022-04-14 17:20:58

具有相同参数的

相同查询有时慢,有时快

  1. 查询正在重新编译非常frequently.Somehow的“缓存计划”经过一段时间后变得清晰起来,所以查询正在重新编译。

  1. 参数嗅探:

  1. 可以是相同的查询和相同的参数.,因此查询不是优化的

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71207077

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档