actix / actix-web

Actix Web is a powerful, pragmatic, and extremely fast web framework for Rust.
https://actix.rs
Apache License 2.0
21.33k stars 1.66k forks source link

Task locations not exposed for tokio-console #2646

Open jeffutter opened 2 years ago

jeffutter commented 2 years ago

Actix tasks don't show their source location in tokio-console.

Expected Behavior

I would expect to see the source location of each task in tokio console

Current Behavior

Most of the source locations appear to be from inside tokio:

Screen Shot 2022-02-10 at 12 56 08 PM

Possible Solution

It looks like this has been partially fixed in tokio: https://github.com/tokio-rs/tokio/pull/4483 but may need some additional work on the actix side as mentioned on reddit:

Note that actix-rt's spawning functions will probably also need to add #[track_caller] attributes, or else you'll just end up with a bunch of locations within actix-rt, rather than in your code. https://www.reddit.com/r/rust/comments/snt5fq/can_tokioconsole_profile_actixrt

Steps to Reproduce (for bugs)

  1. Add Console Subscriber to an actix app
  2. Launch tokio-console

Context

It is difficult to debug performance issues in async applications, such as actix-web. Most traditional profiling yields a nested async/future/tokio things but it's hard to discern where the actual bottlenecks are occurring. tokio-console is a useful tool to get better insights into async systems and it would be great if actix played nicely with it.

Your Environment

robjtede commented 2 years ago

tbh, this is way too annoying to support properly until tokio::task::Builder is stable