在VPS上用pip安装一个python包时,直接提示Killed退出了

#Output
Installing collected packages: pypinyin
Killed

无法安装,好奇怪,别的包都安装上了,就这个出问题,在stackoverflow搜到一个问答,https://stackoverflow.com/questions/43245196/pip-install-killed ,貌似是内存不足导致的。

按照问答里说的,查看Linux kernel日志

tail -f /var/log/kern.log
#Output
Out of memory: Kill process 18741 (pip) score 251 or sacrifice child
Killed process 18741 (pip) total-vm:178620kB, anon-rss:121956kB, file-rss:2996kB

看来确实是内存不足,Out of memory,然后直接被系统kill掉了。

内存不够,增加swap交换分区,正好vps用的是Ubuntu系统,直接参照这篇文章 https://www.digitalocean.com/community/tutorials/how-to-add-swap-space-on-ubuntu-16-04

Ubuntu添加Swap分区

查看系统是否有Swap分区

sudo swapon --show

如果没有任何输出,表示没有swap分区,也可以通过free命令验证一下

free -h
#Output
              total        used        free      shared  buff/cache   available
Mem:            486         316          81           5          88         132
Swap:             0           0           0

可以看到Swap的大小是零,也就是没有swap分区。

创建Swap分区文件

创建一个1G大小的文件作为交换分区的文件

sudo fallocate -l 1G /swapfile

设置这个文件权限

sudo chmod 600 /swapfile

格式化为交换分区文件

sudo mkswap /swapfile

启用交换分区文件

sudo swapon /swapfile

验证一下swap分区文件是否创建成功

sudo swapon --show
#Output
NAME      TYPE  SIZE USED PRIO
/swapfile file 1024M   0B   -1

设置开机时自启用Swap分区

备份/etc/fstab文件,防止出错

sudo cp /etc/fstab /etc/fstab.bak

输入下面的命令在/etc/fstab文件添加一行swap文件的信息

echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

优化Swap设置

调整Swappiness值

sudo sysctl vm.swappiness=10
#Output
vm.swappiness = 10

调整Cache Pressure值

sudo sysctl vm.vfs_cache_pressure=50
#Output
vm.vfs_cache_pressure = 50

设置开机时自动调整这两项设置值
/etc/sysctl.conf文件最后添加下面两行内容

vm.swappiness=10
vm.vfs_cache_pressure=50

OK,搞定,测试一下看pip是否能安装这个包了,哈哈,不再是Killed,变成了Successfully installed,没有问题,成功安装。

#Output
Installing collected packages: pypinyin
Successfully installed pypinyin-0.33.0

标签: python, ubuntu

添加新评论