首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AWS ECS部署:内存不足

问AWS ECS部署:内存不足
EN

Stack Overflow用户
提问于 2020-07-22 11:16:40
回答 1查看 4.7K关注 0票数 8

我已经用3个实例(m5.size)配置了一个AWS ECS集群,每个可用性区域(A、B和C)都有一个实例。该处配置如下:

  • 服务类型:副本
  • 任务数:3
  • 最低健康百分比: 30
  • 最高百分比: 100
  • 放置模板: AZ均衡传播
  • 服务AutoScaling:没有。

在任务定义中,我使用了以下内容:

  • 网络模式: awsvpc
  • 任务记忆:--
  • 任务CPU:--

在容器级别,我只配置了内存软限制:

  • 软限值: 2048 MB
  • 硬性限制:--

我用过awslog进行日志记录。上面的配置工作正常,当我启动服务时,每个实例中都有一个对接程序在运行。其中一个实例中的“停靠者状态”显示如下:

代码语言:javascript
复制
MEM USAGE / LIMIT  
230MiB    / 7.501GiB

容器实例(ECS控制台)显示如下:

代码语言:javascript
复制
Resources   Registered  Available  
CPU             2048       2048  
Memory          7680       5632  
Ports        5 ports

上述结果在所有3个实例中都是相同的-2GB内存已被保留(软限制),而上限内存限制是将近8GB的实例内存(没有硬限制设置)。到目前为止,一切都如期而至。

但是,当我从Jenkins重新部署代码(使用强制部署)时,在Jenkins日志中会出现以下错误:

代码语言:javascript
复制
"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能够停止集装箱,重新购买新的集装箱。任何进一步调试这一点的解决方案或指针都会有很大帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-07-22 11:46:04

与部署期间一样,ECS计划将根据软限制为每个容器分配内存。

代码语言:javascript
复制
2048 * 3 = 6144 MB 

,它小于实例中可用的内存。

代码语言:javascript
复制
5632 (available memory) < 6144 (required memory)

如果您在同一个ECS容器实例中运行副本,那么我将建议保持最小软限制,它应该小于或等于1GB,这也是ECS建议的。

因此,使用此配置,您也将运行蓝绿色部署。由于保持软限制最小作为容器没有什么害处,所以当它需要时,它可以扩展到使用更多的内存,所以为软限制应用一些大内存不会影响性能。

我不建议降低Minimum Healthy Percent: 0,因为将软限制降低到,1GB将解决问题。

或者,如果您希望保持相同的内存限制,则降低Minimum Healthy Percent

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63032953

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档