首页 > 其他分享 >cenots7.6系统报“fork:Cannot allocate memory” 报错的解决方法(实操)

cenots7.6系统报“fork:Cannot allocate memory” 报错的解决方法(实操)

时间:2024-04-19 12:45:00浏览次数:19  
标签:fork max pid free Cannot 报错 内存 0.0 total

今日早晨上班上报一台虚拟机无法ssh连接,想着大抵是关机了,又或是存储满了(经常遇到这样的事情,因为基本上都是做的厚置备,所以会导致分配容量大于实际容量)。
打开后台查看报警事件,没有!

预感到此事不大简单。。。。

进入控制台,输入

w
好家伙,输出

fork:Cannot allocate memory
翻译一下:内存不足或者进程数超限

再次尝试输入

free
想查看当前内存使用情况,同样命令不执行,无法查看

在与使用人沟通后,直接关闭电源重启虚拟机解决。

ps:可执行命令解决方法

  1. 查看系统内存使用率是否过高,确定内存不足后禁用内存占用较多的无关服务或者添加内存。
    通过 free、top 命令查看内存使用情况

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数量

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.查看 /var/log/message 是否存在 oom 的记录。

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

Linux 内核有个机制叫OOM killer(Out Of Memory killer)。该机制会监控那些占用内存过大,尤其是瞬间占用内存很快的进程,然后防止内存耗尽而自动把该进程杀掉。

  1. 核实总进程数是否超限,并修改总进程数 pid_max 配置。
    查看系统 pid_max 值。 pid_max 默认值为32768。

root@:~# sysctl kernel.pid_max
kernel.pid_max = 32768
查看系统内部总进程数。 若总进程数达到了 pid_max,则系统在创建新进程时会报 fork Cannot allocate memory 错。

yum install psmisc

pstree -p | wc -l 如没有此命令先安装
744
ps -eLf | wc -l
临时增加总进程数 pid_max

sysctl -w kernel.pid_max=65535

kernel.pid_max = 65535
永久修改总进程数 pid_max,使配置立即生效。

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

sysctl -p

kernel.pid_max = 65555

标签:fork,max,pid,free,Cannot,报错,内存,0.0,total
From: https://www.cnblogs.com/sjkzy/p/18145595

相关文章

  • DbMigrator迁移数据库报错:The ConnectionString property has not been initialized.
    问题执行.DbMigrator时报错:TheConnectionStringpropertyhasnotbeeninitialized.原因情况一DbContext中没有指定连接字符串解决方案情况二appsettings.json配置文件的属性没有设置为始终复制解决方案右键appsettings.json选择属性>复制到输出目录选择始终复制或......
  • Python安装gensim报错解决
    Python环境安装gensim,pipinstallgensim之后,buildC/C++代码阶段报错:error:‘for’loopinitialdeclarationsareonlyallowedinC99mode出现上面的报错,原因在于:gensim安装包代码中存在C/C++程序,需要本地编译C/C++代码,编译器默认非C99模式,因此语法不兼容;为了编译......
  • deepspeed 训练多机多卡报错 ncclSystemError Last error
     最近在搞分布式训练大模型,踩了两个晚上的坑今天终于爬出来了我们使用2台8*H100遇到过错误110.255.19.85:ncclSystemError:Systemcall(e.g.socket,malloc)orexternallibrarycallfailedordeviceerror.10.255.19.85:Lasterror:10.255.19.85:socketStartCo......
  • redis 设置了 bind 后开机自启动报错
    redis设置了bind后开机自启动报错‍虚拟机中安装的redis​,在配置文件中设置了bind​,开机自启动时遇到:[root@localhost~]#tail-f/var/log/redis/redis.log849:C18Apr202407:18:49.475#oO0OoO0OoO0OoRedisisstartingoO0OoO0OoO0Oo849:C18Apr202407:18:......
  • json反序列化 JsonConvert.DeserializeObject 报错 One or more errors occurred. (U
    接口返回的字符串肉眼看起来正常,也是标准json,反序列化时候报错,字符串添加了UTF8-BOM头(windows记事本默认编码),可以通过以下代码移除标头//模拟json字符串对象varjsonStr="{}";byte[]buffer=Encoding.UTF8.GetBytes(jsonStr);varsResult=Encoding.UTF8.GetString......
  • net8 linux docker sqlserver报错error: 31 - Encryption(ssl/tls) handshake failed)
    asp.netcore升级到8.0后遇到数据库不能连接问题?_已解决_博问_博客园(cnblogs.com) 中文提示:连接数据库过程中发生错误,检查服务器是否正常连接字符串是否正确,错误信息:Aconnectionwassuccessfullyestablishedwiththeserver,butthenanerroroccurredduringthep......
  • Unity Android 打包报错解决方案记录
    1.安卓版本过低报错提示PickedupJAVA_TOOL_OPTIONS:-Dfile.encoding=UTF-8D:\Develop\Unity\HRVTest\Library\Bee\Android\Prj\Mono2x\Gradle\unityLibrary\src\main\java\com\unity\androidnotifications\UnityNotificationManager.java:164:错误:找不到符号......
  • react 使用effect 的报错
    1、像这种,根据someId值的改变,每次调用一次useEffect的。如果在useEffect加上async则会出现报错 正确的做法,则是去掉useEffect上的async useEffect(()=>{asyncfunctionfetchData(){try{//在这里进行异步操作constresponse=awaitMyAPI.g......
  • jdk 21降为 1.8 报错(idea中)
    1、检测环境变量配置win+r =>cmd 检测jdk版本 java-version查看环境变量中jdk路径  echo%JAVA_HOME%2、打开IDEA的设置或首选项对话框File→Settings→ Build,Execution,Deployment”→“Compiler”,在“JavaCompiler”部分,将“Targetby......
  • 运行MongoDB 报错GLIBC_2.14 not found
    Linux环境下安装完mongodb,运行./mongod报错如下#./mongod./mongod:/lib64/libc.so.6:version`GLIBC_2.14'notfound(requiredby./mongod)使用rpm-qa|grep glibc查看系统当前的glibc版本为2.12使用如下命令查看系统glibc最高支持的版本为2.12#strings/lib64/libc.s......