Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Performance 分析分布式系统_Performance_Profiling_Distributed_Distributed Computing_Hpc - Fatal编程技术网

Performance 分析分布式系统

Performance 分析分布式系统,performance,profiling,distributed,distributed-computing,hpc,Performance,Profiling,Distributed,Distributed Computing,Hpc,我想知道在分布式系统中跟踪性能瓶颈的可能方法。我知道一些工具,如及其后代(例如),但我更好奇的是方法论,而不是具体的工具 换句话说,如果一个分布式系统没有任何明显的瓶颈,你如何研究和改进它的性能呢?我使用了一种方法,它既有优点,也有缺点。 其优点是它可以工作——它可以发现问题,当问题得到解决时,会产生很好的快速性能。 缺点是这是大量的体力劳动 我甚至写了一本书,包括了方法。 这项工作是收集带有时间戳的事件日志,并将它们合并到一个通用的时间轴中。 然后仔细检查它,通过异步代理网络跟踪相关消息流。

我想知道在分布式系统中跟踪性能瓶颈的可能方法。我知道一些工具,如及其后代(例如),但我更好奇的是方法论,而不是具体的工具


换句话说,如果一个分布式系统没有任何明显的瓶颈,你如何研究和改进它的性能呢?

我使用了一种方法,它既有优点,也有缺点。 其优点是它可以工作——它可以发现问题,当问题得到解决时,会产生很好的快速性能。 缺点是这是大量的体力劳动

我甚至写了一本书,包括了方法。 这项工作是收集带有时间戳的事件日志,并将它们合并到一个通用的时间轴中。 然后仔细检查它,通过异步代理网络跟踪相关消息流。 您所寻找的是不必要的消息周期,或者不一定要发生的延迟。 例如,在查看此图片时,由于“将状态发布到数据库”任务,消息的接收被延迟。如果理解了这一点,发布实际上可以在单独的线程上完成


老实说,这是一个很好的问题,对于什么是最好的方法还没有达成共识。最基本的方法之一是日志记录,您基本上只需将一组系统事件转储到一个文件中,就可以解析这些日志,找到事件之间的时间,从而计算出它们需要多长时间。另一种方法是跟踪(Xtrace使用)。在跟踪中,跟踪请求的生存期。例如,如果您向使用微服务体系结构的服务发送请求,您将在请求通过系统的微服务时跟踪其线程、进程ID和延迟


棘手的部分是找出在请求跟踪中要跟踪的内容,这将取决于分布式系统试图完成的任务。例如,一个明显的性能指标是延迟,因此您将测量请求在每个服务上花费的时间。另一个有趣的指标是争用,因此您可以在请求通过系统时测量CPU中的争用。许多分析工具的一个问题是,它们为您提供了系统或请求的总体指标,但当您想要查找性能问题时,您需要确定请求是否为异常值。因此,有必要将请求的延迟、争用和内存消耗与系统中的其他类似请求进行比较,以确定其是否异常。

这本书的名称是什么?@redblackit:。我从来都不喜欢这本书的书名,而且网上的价格也很荒谬。@MikeDunlavey还有其他方法可以获取那本书的内容吗(例如,它在网上可以买到吗)?@JDiMatteo:这里有一个例子。如果不行,请告诉我。@MikeDunlavey谢谢!过去我很幸运地遵循了你的堆栈溢出建议,到目前为止,我很喜欢你的写作风格