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