我们有一个ASP.NET网站(Nancy),它使用async / await,而且应该用于断言。
我们看到一些缓慢的请求(通过AppInsights),并且信息显示线程被阻止'在ShouldAllBe
上,特别是Compile来电。
以下是AppInsights Profiler ETL跟踪的示例:
在上面的屏幕截图中,等待ShouldAllBe
完成后花费了3.2秒。 (参考BLOCKED_TIME
的含义:https://docs.microsoft.com/en-us/azure/application-insights/app-insights-profiler)
GetItemsFromRedisAsync
方法如下所示:
keys.ShouldNotBeEmpty();
keys.ShouldAllBe(cacheKey => !string.IsNullOrWhiteSpace(cacheKey));
// go to redis
那么,就像LINQ编译被卡住/阻塞一样?我无法通过一个简单的控制台应用程序复制1000个字符串,但想知道这里是否有人可以提供进一步的指导?
让我感到困惑的是它为什么显示BLOCKED_TIME
?
来自AppInsights文档:
BLOCKED_TIME表示代码正在等待另一个资源可用,例如等待同步对象,等待线程可用或等待请求完成。
如何才能对LINQ评估中的任何一个进行评估?