Spring Boot API 响应时间



我正在开发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 拦截器、处理程序、控制器等。

最新更新