gpt4 book ai didi

c# - IdentityServer4/Newtonsoft.Json 中的探查器 BLOCKED_TIME

转载 作者:可可西里 更新时间:2023-11-01 08:12:27 24 4
gpt4 key购买 nike

我遇到的问题是我的 IdentityServer 的/connect/introspect 端点有时真的很慢(一次调用需要 10 秒)。正如您在下面看到的,大多数调用 (18k) 执行得很快 (<250ms)。

Overview of request performance

我启用了新的 Application Insights profiling大多数缓慢的轨迹看起来像这样:

Profiler trace of a slow operation

正如在 Application Insights profiler page 上所说:

BLOCKED_TIME indicates the code is waiting for another resource to be available, such as waiting for a synchronization object, waiting for a thread to be available, or waiting for a request to finish.

但我没有理由相信这应该是在等待什么。请求没有激增,所以我认为没有足够的可用线程或其他东西。内存对于我们的应用服务计划来说似乎不是问题,因为它总是在 40% 左右。我还深入研究了 IdentityServer4 的来源但无法确定造成这种情况的任何原因。所以现在我有点卡住了。谁能指出这些缓慢请求的可能原因?或者指出我确定原因的正确方向?任何帮助将不胜感激!

编辑一些额外信息:我们使用 IdentityServer4.EntityFramework将引用 token 存储在 sql azure 数据库中。我查看了 Application Insights,发现那些慢速请求中的查询执行时间不到 50 毫秒。所以我猜这不是数据库。

最佳答案

查看信息,您的所有请求都在 3222 毫秒左右,直到您开始序列化您的 JSON。当您开始将数据序列化为 json JSON 时,请求会跳到 5589 毫秒,当您反序列化它时,它会跳到 8811 毫秒。

这里的问题不是数据库,数据库获取数据的速度可能不够快。不是您没有的请求激增,也不是不存在的内存问题。

问题在于您正在获取大量数据,并且编译器在序列化和反序列化数据时可能会受到惩罚,这两种操作都非常昂贵。

您必须将您的列表安排为 JSON,然后将其反序列化为您可以再次访问的对象。

查看这些调用之间发生的情况、您正在序列化和反序列化的数据量以及之后发生的情况。

那是你的 key 。

关于c# - IdentityServer4/Newtonsoft.Json 中的探查器 BLOCKED_TIME,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45956330/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com