Actuator
最近公司客户经常出现服务挂掉的警告,最后排查出来的原因是健康监测接口和controller层接口使用同一个线程池,当controller层业务访问量增大时,健康监测接口的调用返回会延迟,导致系统判定服务挂掉。
解决方案:使用Actuator自定义健康监测端点,将健康监测接口和controller业务层接口使用的线程池区分开。防止controller层业务访问量的增大而影响健康监测接口调用。
导入Actuator的maven依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
首先yml配置文件:
management:
endpoints:
web:
#路径
base-path: /met
exposure:
#开放自定义端点,对应@Endpoint()绑定的端点地址
include: 'alive'
metrics:
tags:
application: ${spring.application.name}
server:
#使用的端口
port: 8080
Actuator自定义端点实现:
@Slf4j
@Endpoint(id="alive")//端点
@Component
public class AlivenessEndPoint {
@ReadOperation
public ResponseEntity getCustomWebInfo() {
//查看使用的线程信息
System.out.println(Thread.currentThread().getName()+"----------------------------------------------------------");
log.trace("alive");
//返回健康监测状态码
return new ResponseEntity<>(HttpStatus.NO_CONTENT);
}
}
Actuator自定义端点访问路径:
GET http://ip:8080/met/alive
返回状态码:204