我反复看到 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,所以很明显,对于你想要做的事情来说,内存太少了。
有两种方法可以解决这个问题。
在进行升级等操作之前停止所有消耗内存的服务,以减少 apt-* 工作期间消耗的内存量。
向您的实例添加/增加交换以将内存卸载到磁盘您可以看到关于在 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
然后就只是勉强...