我们在项目中达到了一个重点是提高绩效的重点。 我是Spring RESTful微服务的所有者,其中有控制器,委托服务,使用spring存储库。很标准,没什么特别的。
这就是我希望能够做到的事情。 我不想注释我测量的方法,我也不想在我想检查的方法的开头和结尾添加显式定时器调用。代码是"脏"足够与日志打印一样。
我希望能够在外部配置文件中列出要测量的方法,并在spring的帮助下截获并测量它们。将针对生产/评估环境中的不同方法收集基准。 后来我想有一个UI,可以看到每种方法的不同结果。在这个UI中我可以发现异常,调用时间最长的时间,或者最短的时间。从那里我可以深入到服务层,发现我的服务中的软点,从那里到存储库调用的执行不佳的查询。
如果没有指定的工具(我拒绝相信至少有100个可用),我的计划是使用Spring AOP或AspectJ来拦截我列出的方法。在每次拦截中,我都会放置一个调用基准的日志。稍后,我将利用Kibana来发现每种方法的软点,然后向下钻取。
我仍然需要了解方面如何完成的实现细节,以及如何使用kibana为此目标准确设置数据可视化。
如果有人能说明一些亮点 - 提供适合我需要的框架,或者一些经验或代码来帮助实现我的目标,或者提供一种替代或其他方式来进行这些测试,我想听听它非常感谢!谢谢你的头!
答案 0 :(得分:2)
它不是一个真正的代码解决方案,但是您尝试使用NewRelic(http://newrelic.com)进行非常简单的安装,内存和CPU的指纹非常低,监视您的应用服务器并为您提供非常好的仪表板看看。
有免费和高级(免费是一个非常好的报价)
强烈建议检查出来。
尼尔
答案 1 :(得分:2)
这取决于您是要尝试分析生产环境还是专用环境。
如果是专用的env,您可以使用分析器,例如YourKit / JProfiler或JDK内置的JVisualVM,它们提供基本功能。根据我的经验,JVIsualVM通常足够好。
在制作时,您需要占地面积较小,因此您可以在"示例"中使用hprof模式(因此它不会检测所有方法调用),然后使用分析器(我上面提到的或其他任何分析器)分析hprof文件
我还要考虑的另一件事是BTrace - 允许在JVM上进行动态检测 - 我发现它对于调查生产环境上的问题非常有用(不仅仅是分析)
答案 2 :(得分:2)
Spring-Boot / Spring-Boot-Actuator有一些简单的分析测量build in(处理请求需要多长时间)。它基于Metrics framework。
也许你应该看看这个简短的管视频:Spring Boot Actuator endpoints,关于一些Spring-Boot-Actuator功能(在分钟2:03中它显示了我正在谈论的指标)。如果这对您来说已经足够了,那么您可以查看这个问题并回答:Spring Boot Actuator without Spring Boot - 他们讨论如何在没有Boot的情况下使用Actuator。