在我的服务/执行器/健康端点中,需要花费更多时间(大约9秒)。我正在使用下面的依赖项,如何调试这个?
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jetty</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
使用的Spring引导版本:2.0.3
谢谢你,哈里
发布于 2020-08-31 06:54:04
基本上,health
端点的实现方式是包含实现接口HealthIndicator
的所有Spring的列表。
每个健康指示器负责提供关于一个子系统的健康信息(这类子系统的例子有:磁盘、postgres、mongo等),spring引导带有一些预定义的HealthIndicators。
因此,当调用health
端点时,它遍历这个列表并获取每个子系统的信息,然后构造答案。
因此,您可以在相关的健康指标中放置一个断点(假设您知道检查了哪些子系统)并查看发生了什么。
如果您正在寻找HTTP入口点--调用http://<host-port>/health
时被调用的代码(可以根据您的设置不同而变化,但您有此想法),则可以找到这里
另一种出现在脑海中的方法是禁用“可疑”的健康检查,并通过消除而发现缓慢的健康检查。
例如,如果您有一个私密搜索并且希望禁用它,请在application.properties
中使用
management.health.elasticsearch.enabled = false
发布于 2021-06-01 09:13:21
在Mark的答案之上,在application.properties / application.yml中设置此属性
management.endpoint.health.show-details=always
将有助于确定哪些组件构成健康检查,因为GET /致动器/健康将产生更多详细信息。
发布于 2021-12-18 17:38:32
在马克的伟大答案之上
作为在调用/health
端点时同步运行所有健康检查的替代方法(这只会导致随着添加更多的健康检查而导致越来越长的执行时间),您可以通过用@AsyncHealth
注释库弹簧-引导-异步-健康状态指示器 (对于Spring >= 2.2)使您的HealthIndicator
异步运行。
除了使/health
端点立即返回(作为返回在不同线程上计算的health
)之外,它还包括每个异步health()
方法执行的执行时间,作为一个额外的细节,这将极大地帮助计算出哪个底层服务在生产系统上响应缓慢。
免责声明:我编写这个库是为了帮助解决现有HealthIndicator
系统的多个限制,包括这个
https://stackoverflow.com/questions/63665192
复制相似问题