我有一个Python / Flask Web应用程序,我通过Gunicorn在Amazon ECS上的docker镜像中部署。一切都很顺利,然后突然,包括最后一次成功的请求,我在日志中看到了这一点:
[2017-03-29 21:49:42 +0000] [14] [DEBUG] GET /heatmap_column/e4c53623-2758-4863-af06-91bd002e0107/ADA
[2017-03-29 21:49:43 +0000] [1] [INFO] Handling signal: term
[2017-03-29 21:49:43 +0000] [14] [INFO] Worker exiting (pid: 14)
[2017-03-29 21:49:43 +0000] [8] [INFO] Worker exiting (pid: 8)
[2017-03-29 21:49:43 +0000] [12] [INFO] Worker exiting (pid: 12)
[2017-03-29 21:49:43 +0000] [10] [INFO] Worker exiting (pid: 10)
...
[2017-03-29 21:49:43 +0000] [1] [INFO] Shutting down: Master
过程消失,程序退出。 ECS然后重新启动服务,并再次运行docker镜像,但同时服务中断。
什么会导致我的程序获得TERM信号?我在网上找不到任何关于这种情况的引用。请注意,这只发生在ECS上的Docker中,而不是本地。
答案 0 :(得分:1)
事实证明,在向系统添加登录页面后,运行状况检查得到302重定向到/登录/,这是健康状况检查失败。所以容器被定期杀死。亚马逊支持很棒!
答案 1 :(得分:0)
虽然不适用于问题中的问题,但这种行为可能是由容器编排(即 Kubernetes)等外部系统引起的。
例如
在 Kubernetes 场景中,一种解决方案可能是调整 liveness 或就绪探针配置以允许更长的启动时间。