首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >StackExchange.Redis - profile同步方法

StackExchange.Redis - profile同步方法
EN

Stack Overflow用户
提问于 2020-01-09 00:14:41
回答 1查看 131关注 0票数 1

遵循本文档:https://stackexchange.github.io/StackExchange.Redis/Profiling_v2.html

它可以很好地监控异步调用。例如:

代码语言:javascript
复制
var task = db.StringGetAsync("my_key");

是否也可以分析synchron调用?我尝试过的:

代码语言:javascript
复制
var task = Task.Run(() => {
    db.StringGet("my_key");
}

代码执行得很好(它实际上是在执行任务并获取值),但是分析不包含任何结果。

会不会是性能分析只在异步函数中内置于StackExchange.Redis中?

我使用https://github.com/StackExchange/StackExchange.Redis/blob/master/src/StackExchange.Redis/ConnectionMultiplexer.cs来检查ExecuteAsyncImplExecuteSyncImpl的实现,但是我找不到完成性能分析的地方

EN

回答 1

Stack Overflow用户

发布于 2020-01-09 00:51:59

问题是页面上的示例(https://stackexchange.github.io/StackExchange.Redis/Profiling_v2.html)使用的是:

ThreadLocal<ProfilingSession> perThreadSession

当我介绍

代码语言:javascript
复制
var task = Task.Run(() => {
    db.StringGet("my_key");
}

db.StringGet("my_key");的执行是另一个线程的一部分-->导致不同的ThreadLocal<ProfilingSession> perThreadSession对象。

解决方案是使用不绑定到某个ThreadLocal的全局ProfilingSession。然后结果就会出现在那里。即使调用了synchron db.StringGet()方法。

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

https://stackoverflow.com/questions/59649854

复制
相关文章

相似问题

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