Java 用于基准测量的方法截取框架

Java 用于基准测量的方法截取框架,java,spring,performance,performance-testing,method-interception,Java,Spring,Performance,Performance Testing,Method Interception,在我匆忙编写这样的框架之前,我想知道是否有人遇到或开发过这样的框架 在我们的项目中,我们已经达到了一个专注于性能改进的阶段。 我是spring RESTful微服务的所有者,其中有控制器,委托给使用spring存储库的服务。很标准,没什么特别的 以下是我希望能够做到的。 我不想对我度量的方法进行注释,也不想在我想要检查的方法的开头和结尾添加显式计时器调用。这段代码和日志打印一样“脏” 我希望能够在外部配置文件中列出要度量的方法,并在spring的帮助下拦截和度量它们。将为生产/评估环境中的不同方

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

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

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

我希望能够在外部配置文件中列出要度量的方法,并在spring的帮助下拦截和度量它们。将为生产/评估环境中的不同方法收集基准。 稍后,我想有一个UI,它将可视化每个方法的不同结果。在这个UI中,我可以发现异常,调用花费的时间最长,或者最短。从那里,我可以深入到服务层,发现服务中的软点,并从那里深入到存储库调用的性能较差的查询

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

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


如果有人能提供一些轻松的东西-提供一个适合我需要的框架,或者提供一些经验或代码来帮助我实现目标,或者提供一种替代方法或其他方法来进行这些测试,我将非常感激地听到!谢谢你

这并不是一个真正的代码解决方案,但您是否尝试过在一个非常简单的安装中使用NewRelic(),从内存和CPU中获得非常低的指纹,从而监控您的应用程序服务器,并为您提供一个非常好的仪表板

有免费和溢价(免费是一个非常好的报价)

强烈建议您检查一下


Nir

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

对于专用环境,您可以使用诸如YourKit/JProfiler或提供基本功能的JDK内置JVisualVM之类的探查器。根据我的经验,JVIsualVM通常足够好

在生产中,您需要一个低占用空间,这样您就可以在“示例”模式下使用(这样就不会对所有方法调用进行仪器化),然后使用探查器(我上面提到的或任何其他工具)分析hprof文件


另一个我认为是BTrace-允许JVM上的动态测试-我发现它非常有用的调查生产Env(不仅仅是剖析)< P/> pr>弹簧引导/弹簧引导执行器有一些简单的轮廓测量(处理一个请求需要多长时间)。它是基于


也许你应该看一下这段YouTube短片:,它介绍了一些Spring Boot执行器的功能(在2:03分钟中,它显示了我正在谈论的指标)。如果这对您来说足够了,那么您可以看看这个问题和答案:-他们讨论了如何使用不带护套的执行器。

谢谢Ralph,我们使用的是弹簧护套,我会研究一下!