如何解决Linux无法分配内存提示?

Linux基础

1 前言

一个问题,一篇文章,一出故事。
笔者最近遇到一台服务器异常,命令行界面执行命令提示如下错误,

-bash: fork: Cannot allocate memory

原因分析,
– 内存不足或进程数超出限制
– 系统内部的总进程数达到pid_max的上限,创建新进程看到以上提示

2 最佳实践

2.1 检查系统资源的使用

2.1.1 常用命令

top
free -lh

2.1.2 检查日志

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

2.2 检查总进程数限制

2.2.1 获取当前系统的设置

sysctl kernel.pid_max

可见如下显示,

kernel.pid_max = 65536

2.2.2 统计当前的进程数

pstree -p | wc -l

可见如下显示,

7835

2.2.3 定位启动比较多的程序

ps -efL

需要注意的是,
– 参数“e”显示所有进程
– 参数“f”执行完整格式(full-format)显示
– 参数“L”会显示LWP(轻量级进程)或NLWP(线程的数量)

2.2.4 修改限制值

sysctl -w kernel.pid_max=655360
echo "kernel.pid_max = 655360" >> /etc/sysctl.conf
sysctl -p

参阅文档
========================
https://www.cnblogs.com/nmg-yangrx/p/16206148.html

没有评论

发表回复

Linux基础
如何永久挂载iSCSI存储?

1 前言 一个问题,一篇文章,一出故事。 笔者今天遇到按常规参数挂载的iSCSI存储重启系统后异常, …

Linux基础
如何部署onlyOffice documentServer 9.0.0?

1 基础知识 1.1 onlyOffice的简介 – onlyOffice Docume …

Linux基础
如何部署Oracle Linux 9.x RabbitMQ?

1 基础知识 1.1 RabbitMQ的简介 – RabbitMQ拥有成千上万的用户,是 …