如何解决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基础
如何配置RHEL 8.x OpenSSH客户端登录自动过期?

1 前言 一个问题,一篇文章,一出故事。 基于服务器安全,笔者需要让OpenSSH客户端在10分钟内 …

Linux基础
如何安装部署SentinelOne EDR?

1 基础知识 1.1 软件公司介绍 SentinelOne,Inc.是一家在纽约证券交易所上市的美国 …

Linux基础
如何配置Ext4的磁盘配额?

1 基础知识 1.1 Disk Quota的概念 Disk Quota用于合理分配有限的磁盘使用空间 …