gpt4 book ai didi

Rust Tokio - 监控停滞的任务

转载 作者:行者123 更新时间:2023-12-03 11:29:15 27 4
gpt4 key购买 nike

我在 prod 中运行一个 rust Tokio 应用程序。在上一个版本中,我有一个错误,一些请求导致我的代码进入无限循环。
发生的事情是当进入无限循环的任务卡住时,所有其他任务继续正常工作并处理请求,直到停顿任务的数量高到足以导致我的程序无响应。
我的问题是我们的监控系统花了很多时间来识别出问题。例如:回答 kubernetes 健康检查的任务运行良好,但我无法确定我的系统中的任务已停止。
所以我的问题是我是否有办法在这种情况下识别和提醒?
例如:如果我能找到定义任务超时的方法,并且如果它在 X 秒/毫秒后没有返回到调度程序 - 此任务将标记为已停止,这对我来说将是一个很好的解决方案。

最佳答案

使用 tracing这里可能是一个选项:关注 issue 2655每个 tokio 任务都应该有一个跨度。除了tracing-futures,这意味着您应该在每次进入或暂停任务(see this example)时获得一个跟踪事件,通过添加相关数据(例如任务ID/请求ID/...),您应该能够提供将此信息传递给分析工具,以便了解:

  • 一个任务被阻塞(被恢复然后再也没有挂起)
  • 如果您添加自己的跨度,则“用户空间”跨度永远不会退出/关闭,这可能意味着它卡在非阻塞循环中(这也是一个问题,尽管问题不大)

  • 我认为这就是它的程度:正如 issue 2510 所指出的那样,tokio 还没有使用它生成的跟踪信息,因此没有提供“内置”自省(introspection)工具。

    关于Rust Tokio - 监控停滞的任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65696879/

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