在本机Docker环境中停止Docker容器时,默认情况下,它将SIGTERM信号发送到该容器的init进程(PID 1),该进程应为实际应用程序,然后应正确处理关闭操作。但是,在Jelastic中运行容器时,情况似乎并非如此,并且似乎没有每次都正常终止SQL Server而不是优雅地终止SQL Server。
我确实尝试编写并启用获取SQL PID的Systemd服务,然后将SIGTERM发送给它,但是它似乎没有运行,并且从日志中判断,根本没有服务关闭消息,只有启动消息。
那么对容器或环境进行什么更改才能使服务器获取SIGTERM信号并有足够的时间(可能是几秒钟)来进行正常关机?
答案 0 :(得分:3)
感谢您报告问题,我们尝试在我们的测试实验室重现该问题,并能够获得完全相同的结果。我们同意这个问题确实很严重,因此我们现在将以最高优先级解决它。不便之处,敬请原谅。我想注意到,由于我们的主要设计,我们还期望该过程首先以“ sigterm”信号终止,并且仅在考虑到以下情况后,系统在一定时间内未收到终止结果后才必须发送“ sigkill”:进程无法正常终止。我们的工程师将致力于此工作,以更深入地研究该问题,并将在短期内提供解决方案。
谢谢!