【问题标题】:aws ecs instances running out of spaceaws ecs 实例空间不足
【发布时间】:2019-09-05 08:34:13
【问题描述】:

从今天早上开始,我在更新 AWS ECS 中的服务时遇到了问题。任务无法启动。失败的任务显示此错误:

打开 /var/lib/docker/devicemapper/metadata/.tmp928855886:设备上没有剩余空间

我已经检查过磁盘空间并且有。

/dev/nvme0n1p1 7,8G 5,6G 2,2G 73% /

然后我查看了inode的使用情况,发现100%都使用了:

/dev/nvme0n1p1 524288 524288 0 100% /

缩小搜索范围,我发现 Docker 卷是使用 inode 的卷。

我使用的是标准 Centos AMI。

这是否意味着 ECS 集群上可以运行的服务数量有上限? (此时我正在运行 18 个服务)

这可以解决吗?目前我无法进行更新。

提前致谢

【问题讨论】:

    标签: amazon-web-services amazon-ecs


    【解决方案1】:

    您需要在 EC2 主机上调整以下环境变量:

    • ECS_ENGINE_TASK_CLEANUP_WAIT_DURATION
    • ECS_IMAGE_CLEANUP_INTERVAL
    • ECS_IMAGE_MINIMUM_CLEANUP_AGE
    • ECS_NUM_IMAGES_DELETE_PER_CYCLE

    您可以在此处找到所有这些设置的完整文档:https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-agent-config.html

    默认行为是每 30 分钟检查一次,并且只删除 5 个超过 1 小时且未使用的图像。如果您想更频繁地清理更多图像,可以使这种行为更具侵略性。

    要考虑节省空间的另一件事是,不要将图像层压缩在一起,而是为不同的图像和图像版本使用一个通用的共享基础图像层。这可能会产生巨大的差异,因为如果您有 10 个不同的图像,每个图像的大小为 1 GB,占用 10 GB 的空间。但是,如果您有一个 1 GB 的基础映像层,然后是 10 个大小仅为几 MB 的小型应用程序层,仅占用 1 GB 多一点的磁盘空间。

    【讨论】:

    • 当这种情况开始发生时,我连接到实例并运行 docker system prune 来清理容器和图像,结果是没有未使用的图像也没有停止容器。关于你对空间的评论,完全同意。有三个基本映像,任何服务的最大大小约为 600Mb,但在这种情况下,磁盘空间不是问题。 fileas 和可用 inode 的数量是。到目前为止,我已将系统分区的大小从 8 增加到 15 Gb,并且现在可以正常工作。谢谢你的回答!!
    • 上周也发生了同样的事情。有一个错误的服务产生了许多停止的容器,这些容器消耗了所有可用的 inode。我已将 ECS_ENGINE_TASK_CLEANUP_WAIT_DURATION 减少到 15m,以便更早进行清理并且不会消耗 inode。
    猜你喜欢
    • 1970-01-01
    • 2021-08-14
    • 1970-01-01
    • 2022-10-07
    • 2020-12-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-13
    相关资源
    最近更新 更多