如何解决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基础
Linux下的常用性能分析工具?

1 前言 一个问题,一篇文章,一出故事。 最近笔者需要整理常用的Linux分析工具,于是整理此文。 …

Linux基础
如何排查硬盘读写慢问题?

1 前言 一个问题,一篇文章,一出故事。 最近笔者需要排查硬盘慢引起的问题,于是整理此文。 2 最佳 …

Linux基础
如何tcpdump实时测量网络吞吐量?

1 前言 一个问题,一篇文章,一出故事。 最近笔者需要实时测量网络的吞吐量,于是整理此文。 2 最佳 …