日志报错 fork:Cannot allocate memory

最后更新时间:2021-10-27 17:33:36

    现象描述

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

    可能原因

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

    解决思路

    1. 参考 处理步骤,查看实例内存使用率是否过高。
    2. 核实总进程数是否超限,并修改总进程数 pid_max 配置。

    处理步骤

    1. 参考 内存使用率过高问题处理 ,查看实例是否内存使用率过高。若实例内存使用率正常,则执行下一步。
    2. 执行以下命令,查看系统 pid_max 值。
      sysctl  -a | grep pid_max
      
      pid_max 默认值为32768,返回结果如下图所示:
    3. 执行以下命令,查看系统内部总进程数。
      pstree -p | wc -l
      
      若总进程数达到了 pid_max,则系统在创建新进程时会报 “fork Cannot allocate memory” 错。
      说明:

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

    4. /etc/sysctl.conf 配置文件中的 kernel.pid_max 值修改为65535,以增加进程数。修改完成后如下图所示:
    5. 执行以下命令,使配置立即生效。
      sysctl -p