【发布时间】:2012-05-21 23:07:20
【问题描述】:
我正在 EC2 现货实例上运行一些应用程序。此类实例可能会在不通知的情况下被 Amazon 杀死。
在关闭过程中,进程按某种顺序被杀死。我们有监控/恢复程序,它们的行为应该根据服务器是关闭还是进程刚刚崩溃而有所不同。 (特别是如果服务器实际上正在关闭,我们不想做任何事情)
如何在恢复过程中(如果它仍然存在)检测到进程因关闭而被终止?
(更多系统细节:我在不修改外部状态的沙箱中运行未知/不受信任/等代码。通常如果沙箱代码崩溃,是不受信任代码的作者的错,我们不会重新运行它.但是如果沙盒代码由于VM关闭或失败而终止,我们需要在另一个实例上重新运行它。我现在遇到的问题是用户的代码首先被终止,所以监控程序错误地认为崩溃了是用户错误。)
【问题讨论】:
-
监控过程是如何工作的?用户进程是用什么语言编写的?用户进程是否通过初始化脚本启动和停止,您是否可以控制这些脚本?我对如何解决这个问题有一些想法,但如果没有更多细节,很难说什么会奏效。
-
监控是通过 waitpid 完成的。用户进程在 python 中,但它可以运行用任何语言编写的任意扩展模块。用户进程由处理监控的同一进程启动(我们不使用初始化脚本)。
标签: linux amazon-ec2 shutdown