当前位置: 首页 > article >正文

日志报错 fork:Cannot allocate memory

现象描述

日志中出现报错信息 “fork:Cannot allocate memory”。如下图所示:

可能原因

可能是进程数超限导致。系统内部的总进程数达到了 pid_max 时,再创建新进程时会报 “fork:Cannot allocate memory” 错。

解决思路

1. 通过free -m确认内存使用率,查看实例内存使用率是否过高。

2. 核实总进程数是否超限,并修改总进程数 pid_max 配置。

处理步骤

1. 若内存使用过高,可先降低内存使用率。

2. 如内存充足 ,则执行以下命令,查看系统 pid_max 值。

sysctl -a | grep pid_max

根据返回结果,进行对应操作:

  • 返回结果如下图所示,pid_max 默认值为32768,请执行下一步。

  • 返回报错信息 “fork:Cannot allocate memory”,则需执行以下命令,临时调大 pid_max
echo 42768 > /proc/sys/kernel/pid_max

您可再次执行命令,查看系统 pid_max 值。

3. 执行以下命令,查看系统内部总进程数。

pstree -p | wc -l

若总进程数达到了 pid_max,则系统在创建新进程时会报 “fork Cannot allocate memory” 错。

说明

您可执行 ps -efL 命令,定位启动进程较多的程序。

4. 将 /etc/sysctl.conf 配置文件中的 kernel.pid_max 值修改为65535,以增加进程数。修改完成后如下图所示:

5. 执行以下命令,使配置立即生效。

sysctl -p


http://www.kler.cn/a/103894.html

相关文章:

  • composer安装thinkphp6报错
  • uni-app:解决异步请求返回值问题
  • PostgreSQL 认证方式
  • C++ 流程控制(分支、循环、跳转)
  • vue3移动端嵌入pdf的两种办法
  • 【疯狂Java】数组
  • ESP32网络开发实例-将 ESP32 连接到 EMQX Cloud MQTT Broker
  • 关系数据库-postgresql-基础
  • MR混合现实情景实训教学系统在旅游管理专业中的应用
  • JVM的几个面试重点
  • 爬虫-获取数据bs4
  • AI的Prompt是什么
  • Java基础-反射
  • 如何进行二进制文件的读写操作?
  • mysql-面试50题-2
  • 8.力扣c++刷题-->买股票的最佳时机2
  • tcp/ip协议和opc协议对比详解
  • 在edge浏览器中安装好了burp的ca证书,浏览器依旧不能访问https的原因
  • GD32_定时器输入捕获波形频率
  • 【C++】继承和多态