La solución al error "fork: Cannot allocate memory" reportado por el sistema cenots7.6 (operación práctica)

Fui a trabajar esta mañana e informé que una máquina virtual no podía conectarse a ssh. Pensé que probablemente estaba apagada o que el almacenamiento estaba lleno. capacidad).

Abra el fondo para verificar el evento de alarma, ¡no!

Tengo el presentimiento de que esto no es tan simple. . . .

en la consola, ingrese

w

amigo, salida

fork:Cannot allocate memory

Traducir: memoria insuficiente o el número de procesos excede el límite

intenta escribir de nuevo

free

Quiero verificar el uso actual de la memoria, pero el mismo comando no se ejecuta y no se puede verificar

Después de comunicarse con el usuario, apague y reinicie la máquina virtual para resolver el problema.

ps: solución de comando ejecutable

1. Verifique si el uso de la memoria del sistema es demasiado alto. Después de confirmar que la memoria es insuficiente, deshabilite los servicios irrelevantes que ocupan mucha memoria o agregue memoria.

Ver el uso de la memoria a través de los comandos gratuitos y principales

# top
top - 10:43:05 up 6 days,  1:05,  1 user,  load average: 0.00, 0.01, 0.05
Tasks: 133 total,   1 running, 132 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.0 us,  0.1 sy,  0.0 ni, 99.9 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  8009256 total,  5404700 free,   273716 used,  2330840 buff/cache
KiB Swap:  8257532 total,  8257532 free,        0 used.  7412252 avail Mem

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
    9 root      20   0       0      0      0 S   0.3  0.0   4:46.06 rcu_sched
 1878 root      20   0   21692   1324   1000 S   0.3  0.0   1:59.66 irqbalance
 9540 root      20   0       0      0      0 S   0.3  0.0   0:57.49 kworker/0:1
15937 root      20   0  162096   2268   1592 R   0.3  0.0   0:00.05 top
22101 root      20   0       0      0      0 S   0.3  0.0   0:23.94 kworker/1:4
26850 root      20   0  275292   5028   3756 S   0.3  0.1  13:30.88 vmtoolsd

# free -m   -m 参数就是用 M显示内容使用情况
              total        used        free      shared  buff/cache   available
Mem:           7821         266        5278          16        2276        7238
Swap:          8063           0        8063


total=used+free
total:表示物理,内存总量–机器总的物理内存 单位为:M
used:用掉的内存{ 总计分配给缓存(包含Buffer和cache)使用的数量,但其中可能部分缓存并未实际使用 }
free: 空闲的物理内存–未被分配的内存
shared:共享内存,一般系统不会用到,这里也不讨论
buffers:系统分配但未被使用的buffers数量
cached:系统分配但未被使用的cache数量

2. Verifique /var/log/message para registros oom.

# grep "Out of memory" /var/log/messages
#

> El kernel de Linux tiene un mecanismo llamado OOM killer (Out Of Memory killer). Este mecanismo monitoreará aquellos procesos que ocupan demasiada memoria, especialmente aquellos procesos que ocupan memoria muy rápidamente, y luego eliminará automáticamente el proceso para evitar el agotamiento de la memoria.

3. Compruebe si el número total de procesos supera el límite y modifique la configuración pid_max del número total de procesos.

Compruebe el valor pid_max del sistema. El valor predeterminado de pid_max es 32768.

root@:~# sysctl kernel.pid_max
kernel.pid_max = 32768

Ver el número total de procesos en el sistema. Si el número total de procesos alcanza pid_max, el sistema informará un error de bifurcación No se puede asignar la memoria al crear un nuevo proceso.

# yum install psmisc   
pstree -p | wc -l  如没有此命令先安装
744
ps -eLf | wc -l

Aumentar temporalmente el número total de procesos pid_max

# sysctl -w kernel.pid_max=65535
kernel.pid_max = 65535

Modifique permanentemente el número total de procesos pid_max para que la configuración surta efecto inmediatamente.

# echo "kernel.pid_max = 65555" >> /etc/sysctl.conf
# sysctl -p
kernel.pid_max = 65555

Supongo que te gusta

Origin blog.csdn.net/weixin_42517271/article/details/128609701
Recomendado
Clasificación