我已经用3个实例(m5.size)配置了一个AWS ECS集群,每个可用性区域(A、B和C)都有一个实例。该处配置如下:
在任务定义中,我使用了以下内容:
在容器级别,我只配置了内存软限制:
我用过awslog进行日志记录。上面的配置工作正常,当我启动服务时,每个实例中都有一个对接程序在运行。其中一个实例中的“停靠者状态”显示如下:
MEM USAGE / LIMIT
230MiB / 7.501GiB容器实例(ECS控制台)显示如下:
Resources Registered Available
CPU 2048 2048
Memory 7680 5632
Ports 5 ports上述结果在所有3个实例中都是相同的-2GB内存已被保留(软限制),而上限内存限制是将近8GB的实例内存(没有硬限制设置)。到目前为止,一切都如期而至。
但是,当我从Jenkins重新部署代码(使用强制部署)时,在Jenkins日志中会出现以下错误:
"message": "(service App-V1-Service) was unable to place a task because no container instance met all of its requirements. The closest matching (container-instance 90d4ba21-4b19-4e31-c42d-d7223b34f17b) has insufficient memory available. For more information, see the Troubleshooting section of the Amazon ECS Developer Guide.在Jenkins中,该任务显示为“成功”,但运行的是旧版本的代码。这三个实例都有足够的内存可用。此外,我已将最低健康百分比改为30 %,希望ECS能够停止集装箱,重新购买新的集装箱。任何进一步调试这一点的解决方案或指针都会有很大帮助。
发布于 2020-07-22 11:46:04
与部署期间一样,ECS计划将根据软限制为每个容器分配内存。
2048 * 3 = 6144 MB ,它小于实例中可用的内存。
5632 (available memory) < 6144 (required memory)如果您在同一个ECS容器实例中运行副本,那么我将建议保持最小软限制,它应该小于或等于1GB,这也是ECS建议的。
因此,使用此配置,您也将运行蓝绿色部署。由于保持软限制最小作为容器没有什么害处,所以当它需要时,它可以扩展到使用更多的内存,所以为软限制应用一些大内存不会影响性能。
我不建议降低Minimum Healthy Percent: 0,因为将软限制降低到,1GB将解决问题。
或者,如果您希望保持相同的内存限制,则降低Minimum Healthy Percent
https://stackoverflow.com/questions/63032953
复制相似问题