Zen*_*uka 13 c# profiler json.net azure-application-insights identityserver4
我遇到的问题是我的IdentityServer的/ connect/introspect端点有时真的很慢(一次调用10秒).如下所示,大多数呼叫(18k)快速执行(<250ms).
我启用了新的Application Insights分析,大多数慢速跟踪如下所示:
正如Application Insights剖析器页面上所述:
BLOCKED_TIME表示代码正在等待另一个资源可用,例如等待同步对象,等待线程可用或等待请求完成.
但我没有理由相信这应该等待一些事情.请求中没有高峰,因此我认为没有可用的线程或其他东西.内存似乎对我们的应用服务计划没有问题,因为它总是大约40%.我也挖掘了IdentityServer4的来源,但无法确定任何原因.所以现在我有点卡住了.有人能指出这些缓慢请求的可能原因吗?或者指出我确定原因的好方向?任何帮助都感激不尽!
使用一些额外信息进行编辑:我们使用IdentityServer4.EntityFramework在sql azure db中存储引用令牌.我查看了Application Insights,这些慢速请求中的查询执行时间不到50毫秒.所以我猜它不是数据库.
查看信息,您的所有请求都在 3222 毫秒左右,直到您开始序列化 JSON。当您开始将数据序列化为 json JSON 时,请求会跳至 5589 毫秒,当您反序列化时,请求会跳至 8811 毫秒。
这里的问题不是数据库,数据库可能足够快地获取数据。不是请求中的峰值(您没有),也不是不存在的内存问题。
问题在于,您正在获取大量数据,大概编译器在序列化和反序列化数据时会受到惩罚,这两种操作的成本都相当高。
您必须将列表排列为 JSON,然后将其反序列化为可以再次访问的对象。
查看这些调用之间发生的情况、序列化和反序列化的数据量以及之后发生的情况。
那是你的钥匙。
| 归档时间: |
|
| 查看次数: |
525 次 |
| 最近记录: |