背景
一句话就是安装 git 引发的血案,本来在装别的东西,依赖用到了 git,就使用 yum -y install git
安装 git,出现了如下错误:
Error downloading packages:
git-1.8.3.1-21.el7_7.x86_64: [Errno 5] [Errno 12] Cannot allocate memory
perl-Git-1.8.3.1-21.el7_7.noarch: [Errno 5] [Errno 12] Cannot allocate memory
perl-TermReadKey-2.30-20.el7.x86_64: [Errno 5] [Errno 12] Cannot allocate memory
1:perl-Error-0.17020-2.el7.noarch: [Errno 5] [Errno 12] Cannot allocate memory
rsync-3.1.2-6.el7_6.1.x86_64: [Errno 5] [Errno 12] Cannot allocate memory
排查
一般报这个问题,可能是两种原因导致的
线程满了
概率有点小,但还是要查看一番
查看系统进程上限:
[root@lyafei-node-2 ~]# sysctl kernel.pid_max
kernel.pid_max = 32768
查看当前已用进程数:
[root@lyafei-node-2 ~]# ps -eLf | wc -l
120
对比结果,如果两个进程数值很接近,那么需要修改系统最大进程数配置,并使之生效,然后重启看是否能解决问题。
修改最大进程数:
echo 1000000 > /proc/sys/kernel/pid_max
永久生效:
echo "kernel.pid_max = 1000000" >> /etc/sysctl.conf
sysctl -p
运行内存占用率高
大概率是这个问题导致的
先看下 Linux 还有多少内存吧:
[root@unique-node-2 ~]# free -m
total used free shared buff/cache available
Mem: 1007 794 89 50 124 48
Swap: 259 259 0
命令中的 -m
表示结果以 M 为单位展示数据。
结果显示,总内存为 1007M,已使用 794M ,剩余 124M,空闲可用 48M,(我也不知道我理解的这些参数意思对不对,错了勿喷)。
结果显而易见咯,就是内存不够了,清内存、top
命令找一个内存占用率高的进程关掉,或者简单粗暴重启服务器,都可以。我选简单粗暴重启服务器,因为这台是我的测试机,没啥重要的东西。
[root@unique-node-2 ~]# free -m
total used free shared buff/cache available
Mem: 1007 181 664 12 161 666
Swap: 259 0 259
重启后,查看可用内存 666,重新执行安装命令试试:
Installed:
git.x86_64 0:1.8.3.1-21.el7_7
Dependency Installed:
perl-Error.noarch 1:0.17020-2.el7 perl-Git.noarch 0:1.8.3.1-21.el7_7 perl- TermReadKey.x86_64 0:2.30-20.el7 rsync.x86_64 0:3.1.2-6.el7_6.1
Complete!
安装成功!大功告成!
强