【问题标题】:Building python wheel via docker-compose on AWS EC2 gets stuck在 AWS EC2 上通过 docker-compose 构建 python 轮子卡住了
【发布时间】:2020-11-20 02:48:06
【问题描述】:

我有一个 docker 容器,可以在我的笔记本电脑 (iOS) 和我的 PC (Ubuntu 20.4) 上正常构建。我正在尝试在 AWS EC2 实例(Ubuntu 18.04)上构建它,但在为 python 安装 requirements.txt 时它卡在了以下行:

Building wheel for lxml (setup.py): started

它没有显示错误只是卡住了。在我的笔记本电脑/PC 上,这一点大约需要 2 分钟(这比其他需要更少的时间要长)。我现在已经等待了 2 个多小时才能完成,这排除了性能问题(肯定不会那么慢?)。

Docker-compose 和 docker 版本在所有机器上都是相同的(最新的)。

任何想法可能导致这种情况,等待多长时间是合理的?我认为docker应该独立于主机,提供docker版本相同。

【问题讨论】:

  • 您使用的是哪种 Ec2 实例类型?
  • t2.micro(免费层)现在,只是试水
  • 最好打开两个 ssh 并在轮子构建期间检查 cpu 使用情况 topwatch free -m 似乎是内存问题或 cpu 问题
  • 从 Docker 构建 python 轮子时,'top' 显示命令 'cc1' 使用 99%+ 的 CPU 和 50+% 的内存。不到一分钟左右,它停止刷新数据。 (使用 watch free -m 进行监控时,可用内存永远不会低于 60-70)。然后连接到实例变得非常困难/不可能。所以,是的,似乎是一个 CPU 问题。您认为 AWS 免费套餐无法达到此目的,还是我可以尝试其他方法?
  • 我建议在本地构建映像,将映像推送到 ECR 并仅运行映像,这样即使使用免费层也可以运行,作为答案添加。

标签: python amazon-web-services docker amazon-ec2


【解决方案1】:

根据评论中的讨论,实例足够小,达到 99% CPU 使用率60-70% 内存使用率,因此实例变得无响应。

你可以尝试两种可能的选择

  • 将所有构建任务移动到 docker 镜像并在本地构建镜像并将镜像推送到ECR,只需在 Ec2 上运行 docker 镜像,而不是在 Ec2 机器上构建 docker 镜像或轮子。

通过这样做,您将能够利用免费层的优势,使用 t2.micro 运行您的应用程序。

或者

  • 升级一些更高规格的实例,它有更多的 VCPU,如果 t2.micro 不起作用,那么t2.small 实例可能会起作用。

【讨论】:

    猜你喜欢
    • 2017-10-07
    • 2021-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多