问题标签 [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 投票
1 回答
100 浏览

bash - 优雅地停止多个容器,是每个容器或所有容器的 docker stop `--time` 选项?

我正在尝试优雅地停止所有容器。所以我想给每个容器 60 秒。我看到你可以这样做:

--time=60每个容器的时间还是所有容器都只有 60 秒?

  • 例如:如果一个容器需要 59 秒才能停止……这是否意味着下一个容器只需要 1 秒才能停止?
  • 如果所有容器都获得 60 秒...那么我将执行 bash for 循环并在每个容器上执行 docker stop ... 以确保它们每个都获得 60 秒。
0 投票
0 回答
71 浏览

docker - 在 windows 容器中,如何优雅地关闭 asp.net core 应用程序?

在 windows 容器中,如何优雅地关闭 asp.net core 应用程序?

我想使用外部进程(例如:bash、powershell、dotnet 核心控制台应用程序)来更新我的外部模块 dll(由 Assembly.Load 使用)。
所以我需要停止我的应用程序以避免 dll 文件被锁定。
我希望停止优雅关机


我的生产环境有windows和linux版本。
在 linux 中,我创建了一个进程来执行“bash -c pkill dotnet”以正常关机。
在windows中,我不知道如何实现。

  • 尝试发送 SIGTERM 但未找到方法。
  • 尝试执行taskkill,显示“无法终止带有PID的进程”,我认为是由于没有MainWindowHandle(始终为0)
  • 尝试发送 ctrl+C 到进程,但无法附加到进程。
0 投票
0 回答
146 浏览

java - 如何优雅地关闭tomcat

我希望 Tomcat 优雅地关闭。

  • 带spring boot 2.2.2版本
  • 使用外部 tomcat 9.x(非嵌入式 tomcat)

我尝试如下。

  • 杀死 -TERM $(tomcat PID)
  • 应用弹簧执行器 -> 调用localhost:8080/actuactor/shutdown
  • application.yml server:shutdown:graceful-> 不工作,因为我的 Spring Boot 版本是 2.2.2

以上三种方法都没有正常关闭。(全部立即终止。)

如何优雅地关闭tomcat?

0 投票
0 回答
84 浏览

wmi - Win32Shutdown 和 shutdown.exe 之间的区别

今天我想知道Win32Shutdownshutdown.exe之间有什么区别?两者都可以通过 CMD、Powershell、VBscript、.NET 应用程序等各种方法调用……但我似乎找不到它们两者之间的区别。我可以假设shutdown.exe只是一个包装Win32Shutdown吗?但是,它们并不具有所有相同的功能。哪些是由 Startmenu --> Shutdown/restart 按钮调用的?

我问这个的原因是因为当我从我们的 .NET 应用程序调用“shutdown.exe /s /t 0”并以正常方式(通过开始菜单)关闭 Windows 时,我注意到行为有所不同。不同的是,在正常关机时,笔记本电脑(其中 30 多台)始终可以正常启动。但是当我使用shutdown.exe /s /t 0从我们的 .NET 应用程序调用时,有时可能会发生 Windows 在启动时挂起。就在 POST 完成并显示 Windows 徽标(在本例中为戴尔)之后,它会冻结。只有硬关机才能解决问题。现在我明白这可能是由于文件损坏/损坏,所以我想知道是否shutdown.exe /s /t 0会导致在关闭之前无法正确保存某些内容?

0 投票
1 回答
117 浏览

ruby - 如何优雅地关闭 Ruby 中的线程

过去一周我一直在尝试 Ruby 中的多线程概念。

为了练习,我正在设计一个文件下载器,它对一组 URL 发出并行请求。目前我需要在触发中断信号时安全地关闭线程。我已经阅读了多线程和在运行时捕获信号的理论。然而,尽管有这些理论知识,我仍然不知道如何在实践中使用它们。

无论如何,我将把我的概念验证工作留在下面。

0 投票
0 回答
104 浏览

grpc-go - grpc服务器和网关关闭顺序

我的 gRPC 服务使用grpc-gateway服务 http 请求。

为了让服务正常关闭,有什么需要注意的顺序吗?即是关机命令

A. gRPC 服务 -> 网关

B. 网关 -> gRPC 服务

我能找到的唯一文章/文档是这里,推荐 A 但没有解释原因。我自己对 A 的推理是,我们需要网关处于活动状态才能路由未完成的 gRPC 请求。但这不受任何文档的支持。

0 投票
0 回答
39 浏览

linux - 手册页之间返回值的差异

上下文:我想优雅地关闭一个 TCP 连接,我想知道我是否需要担心ENOBUFS错误,即使它很少见。

在网络上,有两个shutdown()手册页——一个是内核函数,第二个是 C posix 函数。posix 手册页有一个额外的返回值 - 它表示该函数可能会失败并出现错误 ENOBUFS ( shutdown(2) , shutdown(3p) )。posix 一个是 4 岁,而另一个是 3 个月前修改的。

另一方面,当我通过命令行(man 版本 2.9.4)执行相同操作时,没有 posix,甚至没有 C 库函数页面,只有 3 岁的内核函数页面,未指定ENOBUFS为错误。

我应该更喜欢哪一个?网页手册页还是来自终端?

如果有一个函数同时包含 2 和 3 的手册页,我该选择哪一个?如果选择取决于,在 的情况下使用shutdown()什么?(我应该更喜欢最新的手册页吗?)

0 投票
0 回答
54 浏览

spring-boot - 停止应用服务后,有没有办法优雅地停止 Azure 应用服务中的 spring-boot 应用?

我在 Azure 应用服务上部署了一个 Java spring-boot 应用。每当我停止应用程序服务时,spring-boot 应用程序都不会以优雅的方式停止。您能否建议一种以优雅的方式停止 spring-boot 应用程序的方法?

0 投票
1 回答
466 浏览

javascript - 如何在 Node.js 中捕获 * 并忽略 * SIGINT?

我在相关主题上找到了另一篇文章(如何在退出时执行异步操作),但它可能不适用于 macOS,或者在运行 Node.js v14 时不再适用。

我原来的问题更复杂。我无法在 SIGINT 的回调(或异步回调)中获得setTimeouts 或await正常工作。但后来我意识到我真正需要做的,首先是能够捕捉和忽略SIGINT。

如果我能做到这一点,那么我也可以关闭以响应 SIGINT,如果我愿意的话。

所以我回到基础,看看我是否可以简单地禁用 SIGINT。我不能。

我可以检测到 SIGINT,我可以使用控制台消息或任何其他同步代码进行响应,但是无论我做什么,我的代码都会关闭,并且很快就会关闭。

这些方法都不能阻止我的 Node.js 服务器在点击Ctrl+后关闭C,或者以其他方式向进程发送 SIGINT。

更新:

当我通过 运行我的服务器时node app.js,SIGINT 拦截正常工作!

显然,我一直被一个通过nodemon. 无法正确捕获来自我的 IDE 终端的Ctrl+或使用 IDE 的图形红色(停止)按钮发送的中断,因为结果信号确实被发送到 nodemon。C然而,在 IDE 环境之外,没有 nodemon 解决问题,我的优雅关闭可以按我的意愿工作。

0 投票
0 回答
101 浏览

java - 如何使用 Reactor 调度程序优雅地关闭?

ExecutorServicewith不同awaitTermination()dispose()在 Reactor 中的 Scheduler 中只是shutdownNow()在处理时调用;那么如何优雅地关闭调度程序呢?

有时我们想在所有提交的任务完成后终止我们的 executorService:

作为 Reactor 的新手,我关闭调度程序的唯一方法是调用Scheduler.dispose(). 但似乎调度器的实现,例如Scheduler.BoundedElasticScheduler,只是调用executor.shutdownNow()中断内部工作人员,并忽略提交任务的状态。如何优雅地关闭调度程序,直到所有任务完成?