我使用AWS Fargate已经有一段时间了,并且一直是该服务的忠实拥护者。
这周,我创建了一个监控仪表板,其中详细说明了我的容器的最新运行时以及每个表的时间戳水印(MAX日期更新值)。我设置了 SNS主题,以便在容器退出并显示代码1时向我发送电子邮件。
但是,我今天遇到了一个棘手的问题,因为我怀疑是与Postgres RDS实例相关的僵局情况。
我有一天在调度程序上(通常每X或Y小时)在不同时间运行多个任务。其中大多数任务将执行一些业务逻辑计算,并插入/更新RDS实例。
我的一项任务(稍后检查Cloudwatch日志时)被困在对表进行更新的过程中,基本上只是挂在那里等待。我的猜测是,一个用户(也许是我)正在手动向同一张表发出一条小的update语句,从而触发了某种形式的锁定。
因为我的任务是重复设置的,所以几个小时后,同一任务又配置了另一个容器,试图更新同一张表,然后挂起。
我仅注意到此问题,因为我的监控仪表板显示更新的水印日期仍是过去几天,即使我在容器运行时未收到任何错误警报或通知。到这个时候,我已经运行了3个容器,每个容器都卡在同一张表的同一更新上。
登录ECS控制台后,我看到集群中有3个正在运行的任务实例-所有相同的任务,都卡在同一个插入件中。
所以我的问题是: