我正在运行一个Rust应用程序,时雄在prod。在上一个版本中,我有一个bug,一些请求导致我的代码进入无限循环。
当进入循环的任务被卡住时,所有其他任务继续正常工作并处理请求,直到停滞任务的数量足够高,导致我的程序没有响应。
我的问题是我们的监控系统花了很多时间来识别出问题。例如,响应Kubernetes健康检查的任务运行良好,我无法识别我在系统中暂停了任务。
所以我的问题是,在这种情况下,是否有一种识别和警报的方法?
如果我能找到一种方法来定义任务的超时,如果它没有返回到调度程序后X秒/米利斯标记为停滞的任务,这将是一个足够好的解决方案对我来说。
2条答案
按热度按时间cnjp1d6j1#
使用
tracing
可能是一个选项:在issue 2655之后,每个时雄任务都应该有一个跨度。除了tracing-futures,这意味着每次任务进入或暂停时,您都应该获得一个跟踪事件(参见此示例),通过添加相关数据(例如,task id / request id /...),然后您应该能够将此信息提供给分析工具,以便了解:我认为这就是它的范围:如问题2510所指出的,时雄还没有使用它生成的跟踪信息,因此没有提供“内置”自检工具。
f0brbegy2#
时雄控制台是由时雄团队构建的监控解决方案。它可以用来监视停滞的任务等。
在精神上,它就像最高指挥部,但专门为时雄。
https://github.com/tokio-rs/console