我想知道可能的方法来追踪分布式系统中的性能瓶颈。我知道像X-Trace及其后代(例如Dapper)这样的工具,但我对方法而不是特定工具更感兴趣。
换句话说,鉴于分布式系统没有任何明显的瓶颈,您如何研究和改善其性能?
答案 0 :(得分:3)
我使用的方法有pro和con。 专家是它的工作原理 - 它发现的问题是,当它们被修复时,会产生很好的快速性能。 这是一个很好的手工工作。
我甚至写了一本书,并包括了这个方法。 工作是收集带时间戳的事件日志,并将它们合并到一个共同的时间线中。 然后仔细检查它,通过异步代理网络跟踪相关消息的流程。 您正在寻找的是不必要的消息周期,或者不一定必须发生的延迟。 例如,在查看此图片时,由于任务“将状态发布到DB”,正在延迟收到消息。当理解这一点时,发布实际上可以在一个单独的线程上完成。
答案 1 :(得分:0)
老实说,这是一个很好的问题,关于什么是最好的方法还没有达成共识。最基本的方法之一是日志记录,您基本上只将一堆系统事件转储到文件中,就可以解析这些日志以找出事件之间的时间间隔,以弄清它们花费的时间。另一种方法是跟踪(由Xtrace使用)。在跟踪中,您跟踪请求的生命周期。例如,如果您向使用微服务体系结构的服务发送请求,则在通过系统微服务时,您将跟踪该请求的线程,进程ID和延迟。
棘手的部分是弄清楚在跟踪请求时要跟踪什么,这将取决于您的分布式系统要完成的工作。例如,性能的一个明显指标是延迟,因此您将测量请求在每个服务上花费的时间。另一个有趣的指标是争用,因此您可以在请求通过系统时测量CPU中的争用。这些配置文件工具中的许多问题之一是,它们为您提供了系统或请求的总体指标,但是当您要查找性能问题时,您需要弄清楚请求是否是异常值。因此,必须将一个请求的等待时间,争用和内存消耗与系统中的其他类似请求进行比较,以判断它是否异常。