遵循本文档:https://stackexchange.github.io/StackExchange.Redis/Profiling_v2.html
它可以很好地监控异步调用。例如:
var task = db.StringGetAsync("my_key");是否也可以分析synchron调用?我尝试过的:
var task = Task.Run(() => {
db.StringGet("my_key");
}代码执行得很好(它实际上是在执行任务并获取值),但是分析不包含任何结果。
会不会是性能分析只在异步函数中内置于StackExchange.Redis中?
我使用https://github.com/StackExchange/StackExchange.Redis/blob/master/src/StackExchange.Redis/ConnectionMultiplexer.cs来检查ExecuteAsyncImpl和ExecuteSyncImpl的实现,但是我找不到完成性能分析的地方
发布于 2020-01-09 00:51:59
问题是页面上的示例(https://stackexchange.github.io/StackExchange.Redis/Profiling_v2.html)使用的是:
ThreadLocal<ProfilingSession> perThreadSession
当我介绍
var task = Task.Run(() => {
db.StringGet("my_key");
}db.StringGet("my_key");的执行是另一个线程的一部分-->导致不同的ThreadLocal<ProfilingSession> perThreadSession对象。
解决方案是使用不绑定到某个ThreadLocal的全局ProfilingSession。然后结果就会出现在那里。即使调用了synchron db.StringGet()方法。
https://stackoverflow.com/questions/59649854
复制相似问题