问题标签 [graceful-shutdown]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
48 浏览

amazon-web-services - 在新版本期间更改终止GracePeriodSeconds 值不会生效

我必须将terminationGracePeriodSecondsKubernetes 部署清单文件中的 30 更改为 120,但是当我使用 helm 进行部署时:

旧的 pod 立即终止,新的 pod 开始运行。

但预期的行为是让旧 pod 保持终止状态,并按照定义继续其当前进程 120 秒。

这里还缺少什么?

这能解决我的问题吗?

我遇到的一个问题是,添加 sleep 命令是否会停止 Pod 的当前进程的执行,并且在它处于终止状态时只是休眠?

0 投票
0 回答
42 浏览

java - GRPC:如果服务器正在处理请求,为什么客户端会收到“不可用:连接在 GOAWAY.HTTP/2 后关闭”

我有一个单元测试,它试图通过向服务器发送一些 grpc 调用、关闭服务器并验证在服务器关闭之前完成的请求来验证正常的 grpc 服务器关闭。

在测试线程中,我启动了 5 个线程,每个线程执行一个客户端 rpc 调用。

在服务端,我减少一个倒计时锁存器(receivedLatch)以确保已收到呼叫,然后休眠几秒钟。

回到主测试线程,我通过调用 receivedLatch.await() 断言 receivedLatch 为 0。

此时我的理解是所有 5 个客户端调用都连接到服务器并正在处理(睡眠)。

之后我打电话:

问题是竞争条件,有时测试成功完成,而其他时候测试线程中的 rpc 调用出现测试错误,但以下情况除外:

io.grpc.StatusRuntimeException:不可用:连接在 GOAWAY 后关闭。HTTP/2 错误代码:NO_ERROR,调试数据:app_requested

调查这个错误我发现:

  1. UNAVAILABLE... GOAWAY 被发送到试图连接到当前正在关闭的服务器的客户端。
  2. “调试数据:app_requested”来自关闭方法 NettyServerHandler.GracefulShutdown()

所以问题是:

  1. 自从我断言我的 receivedLatch 为 0 并且该锁存器的倒计时在 RPC 调用的服务方法中,客户端如何未连接。如果它被取消,它会更有意义。

  2. 为什么在我的进程内 RPC 完成之前调用 NettyServerHandler,因为我的理解是 awaitTermination 应该处理的。**

调用 grpcServer.shutdown() 时是否直接调用 NettyServiceHandler 中的关闭。如果是这样,那不总是一场比赛吗?

谢谢,

0 投票
0 回答
16 浏览

spring-boot - Spring Boot优雅关闭不起作用

我在 application.properties 上添加了 server.shutdown=graceful 和 spring.lifecycle.timeout-per-shutdown-phase=20s,spring boot 版本是 2.5.6

0 投票
1 回答
29 浏览

java - 正常关闭在 Spring Boot App 中不起作用

我想在现有的 Spring Boot (v2.3.9) 应用程序上激活正常关闭。

最初,为了测试该功能,我创建了一个示例应用程序并在 application.properties 中添加了属性 server.shutdown: graceful。当我终止应用程序时,我可以在日志中看到服务器正常关闭。

在此处输入图像描述

对输出感到满意,我将相同的属性添加到现有应用程序中。但是,当我杀死那个特定的应用程序时,关闭不会正常发生。不会产生像上面这样的日志。这让我想知道该属性是否真的被设置了所以只是为了加倍我还将它设置为运行时参数-Dserver.shutdown=graceful。即使在那之后它也没有工作。

我已确认为现有应用程序运行的 Spring Boot/Tomcat 版本,它们高于启用此属性所需的最低要求。

现有的应用程序有一个复杂的日志结构,混合了各种库(log4j、logback 等)。是否会发生正常关闭但由于更高的日志记录级别,日志不显示的情况?如果是这种情况,我应该设置/覆盖哪个属性来启用它们。