Java 响应式应用程序的性能分析

问题描述 投票:0回答:1

JVM 有一套很棒的工具来查找应用程序中的热点。 通过启用 JMX 并与 JProfiler / VisualVm 连接,我们可以很快找到工作流程中花费最多时间的方法。

但是,反应式应用程序(项目反应器)将我们的工作流程分割为可能接受随机线程的未命名任务。更重要的是,等待外部资源是以反应方式完成的,因此我们不会看到给定的访问阻止了我们的工作流程。

您对如何有效地分析反应式应用程序有什么想法吗? 我想避免在代码中插入一些探针并通过日志记录来完成。

Project Reactor 通过引入在冒泡错误时收集堆栈跟踪的代理解决了关闭堆栈跟踪的问题,因此我们可以看到错误发生时程序在哪里的完整图像。

剖析怎么样?尽管会发现本身需要一些时间的方法(例如迭代集合时的扇出),但涉及数据库或外部服务访问的最常见问题不会被发现。

寻求您的意见。 问候

java project-reactor
1个回答
0
投票

也许一种解决方案是使用像 zipkin 这样的跟踪系统,它可以为您提供跨服务和外部调用的时间。 然后根据请求跟踪哪个服务需要时间,然后使用您的 VisualVM 进行跟踪 如果需要继续跟踪瓶颈,之后也可以在产品上使用 zipkin

例如 /first 调用 /second 服务,所有这些都在reactor中。第一个有 1.5 秒的睡眠时间来模拟缓慢的响应时间。

© www.soinside.com 2019 - 2024. All rights reserved.