2

在我急于编写这样的框架之前,我想知道是否有人遇到或开发过这样的框架。

在我们的项目中,我们已经达到了一个重点是性能改进的地步。我是一个 spring RESTful 微服务的所有者,其中有控制器,委托给使用 spring 存储库的服务。很标准,没什么特别的。

这就是我希望能够做到的。我不想注释我测量的方法,也不想在我想检查的方法的开头和结尾添加显式计时器调用。代码与日志打印一样“脏”。

我想做的是在外部配置文件中列出要测量的方法,并在 spring 的帮助下对其进行拦截和测量。将针对生产/评估环境中的不同方法收集基准。稍后我想要一个 UI 来可视化每种方法的不同结果。在这个 UI 中,我可以发现异常情况,即调用耗时最长或最短的时间。从那里我可以深入到服务层,发现我的服务中的软点,并从那里深入到存储库调用的性能不佳的查询。

在没有指定工具的情况下(我拒绝相信至少有一百个可用),我的计划是使用 Spring AOP 或 AspectJ 来拦截我列出的方法。在每次拦截中,我都会放置调用基准的日志打印。稍后我将利用 Kibana 找出每种方法的弱点,然后深入研究。

我仍然需要了解方面如何完成的实现细节,以及如何使用 kibana 准确设置数据可视化以实现该目标。

如果有人能有所启发——提供一个适合我需要的框架,或者一些经验或代码来帮助实现我的目标,或者提供一种替代方法或另一种方法来进行这些测试,我希望非常感激地听到它!谢谢一个头!

4

3 回答 3

2

它不是真正的代码解决方案,但您是否尝试在非常简单的安装中使用 NewRelic( http://newrelic.com ),内存和 CPU 的指纹非常低,可以监控您的应用程序服务器,并为您提供一个非常好的仪表板来查看在。

有免费和高级(免费是一个很好的报价)

强烈建议检查一下。

尼尔

于 2015-06-28T07:39:27.200 回答
2

这取决于您是尝试分析生产环境还是专用环境。

在专用环境的情况下,您可以使用分析器,例如 YourKit / JProfiler 或提供基本功能的 JDK 内置 JVisualVM。根据我的经验,JVIsualVM 通常足够好。

在生产中,您需要低占用空间,因此您可以在“样本”模式下使用hprof(因此它不会检测所有方法调用),然后使用分析器(我上面提到的那些或任何其他)分析 hprof 文件

我会考虑的另一件事是 BTrace - 允许在 JVM 上进行动态检测 - 我发现它对于调查生产环境中的问题非常有用(不仅仅是分析)

于 2015-06-28T08:30:51.437 回答
2

Spring-Boot / Spring-Boot-Actuator 内置了一些简单的分析测量处理请求需要多长时间)。它基于Metrics 框架

也许你应该看看这个简短的你管视频:Spring Boot Actuator endpoints,关于一些 Spring-Boot-Actuator 特性(在第 2:03 分钟,它显示了我正在谈论的指标)。如果这对您来说已经足够了,那么您可能会看看这个问题和答案:没有 Spring Boot 的 Spring Boot Actuator - 他们讨论了如何在没有 Boot 的情况下使用 Actuator。

于 2015-06-28T08:45:20.157 回答