apt-get 更新失败(在 /usr/lib/apt/methods/https 内存占用上执行的 oom killer)

apt-get 更新失败(在 /usr/lib/apt/methods/https 内存占用上执行的 oom killer)

我反复看到 apt-get 更新/安装过程导致 /usr/lib/apt/methods/https 耗尽系统内存,从而触发 OS oom killer。OOM killer 会终止 https 进程,导致 apt-get 操作失败。

我在 EC2 t2.smalls 和 t2.mediums 上运行。

$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 14.04.2 LTS
Release:    14.04
Codename:   trusty
$ uname -a
Linux stage-app1 3.13.0-48-generic #80-Ubuntu SMP Thu Mar 12 11:16:15 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux

答案1

当你的实例耗尽内存时,就会触发 OOM killer,所以很明显,对于你想要做的事情来说,内存太少了。

有两种方法可以解决这个问题。

  1. 在进行升级等操作之前停止所有消耗内存的服务,以减少 apt-* 工作期间消耗的内存量。

  2. 向您的实例添加/增加交换以将内存卸载到磁盘您可以看到关于在 ubuntu 中添加交换区的问题如果你不确定

答案2

解决方法:恢复到以前的 apt-transport-https。

$ sudo apt-get install -y --force-yes apt-transport-https=1.0.1ubuntu2

当我这样做时,我不再看到 /usr/lib/apt/methods/https 消耗机器内存的问题,并且 OOM killer 不必执行它的工作。

答案3

遭遇了与楼主相同的情况。已修复:

wget http://archive.ubuntu.com/ubuntu/pool/main/a/apt/apt_1.0.1ubuntu2.19_amd64.deb
dpkg -i apt_1.0.1ubuntu2.19_amd64.deb
aptitude update
aptitude upgrade

此后,apt 可以正常工作,并且不会再出现 OOM 终止的情况。顺便说一句,我已启用无人值守升级,因此可能是某种安装中期问题导致了这种情况 :S

答案4

看起来这apt-get update在内存方面非常贪婪(有关解释,请参阅为什么“apt-get .update”会显著增加内存使用量?)。

我在一台 1GB 的机器上也遇到过同样的问题,进程https会耗尽所有内存并最终被终止。在我的例子中,没有其他进程消耗大量内存,因此 tomodachi 的答案不适用。

我最终能够通过以下组合运行该命令直至完成:

  • 编辑/etc/apt/sources.list文件,减少源数量
  • aptitude update在启动之前尽可能地对源进行预处理/重复数据删除apt-get update

然后就只是勉强...

相关内容