背景

一句话就是安装 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!

安装成功!大功告成!

最后修改:2020 年 04 月 15 日 06 : 28 PM
如果觉得我的文章对你有用,请随意赞赏