我正在开发Spring Boot API。
现在是监控部分。我想在其中添加监视。所以我使用致动器,从中获取数据(如gc,内存等(并将其绘制在Grafana上。
现在是API的响应时间。执行器量规仅返回最后一个 API 命中。所以基本上我如何计算每个 API 的响应时间。我的意思是我应该放在哪里
long startTime = System.currentTimeMillis();
和
long endTime = System.currentTimeMillis();
long diff = endTime - startTime;
我尝试将其放在控制器,控制器的第一行和控制器的最后一行上,但是当我将其与Gage进行比较时,结果有所不同。
我应该如何正确测量它?
您可以尝试围绕DispatcherServlet#service
方法获得AOP"周围"建议?
未经测试:
@Aspect
@Component
public class AroundExample {
@Around("org.springframework.web.servlet.DispatcherServlet.service()")
public Object doBasicProfiling(ProceedingJoinPoint pjp) throws Throwable {
// start stopwatch
Object retVal = pjp.proceed();
// stop stopwatch
return retVal;
}
}
不要忘记在POM中添加aop
启动器:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
</dependency>
这将为您提供整个请求调用的非常接近的时间,包括所有内容,例如 Spring 拦截器、处理程序、控制器等。