我正在测试SpringBoot2.3中的新特性( server.shutdown=graceful
和tomcatweb服务器)的支持 terminationGracePeriodSeconds
现场。当优雅的关闭阶段开始时,新的http请求将按预期被拒绝,此时应详细说明当前请求,直到可配置的超时( spring.lifecycle.timeout-per-shutdown-phase
). 奇怪的行为是spring引导执行器活动结果,因为在这种情况下,活动端点是不可到达的。
因此,kubelet无法知道微服务在关闭期间是否仍然存在,或者是否因其他原因而卡住。因为k8s liveness探测器不依赖 terminationGracePeriodSeconds
字段,pod将根据其k8s活动配置重新启动,而spring boot microservice由于野蛮重新启动而无法执行正常关机。
我错过什么了吗?我如何处理这种情况?
1条答案
按热度按时间nc1teljy1#
同时,我采用了另一种解决方案,我使用rmi协议通过jmx调用spring boot的liveness探测器。在这种情况下,活跃度在正常关闭期间给出一个“up”响应。为此:启用jmx设置属性
spring.jmx.enabled
为true,则使用jmx客户机调用jmx运行状况指示器。