如何解决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基础
如何熟悉find的使用?

1 前言 一个问题,一篇文章,一出故事。 笔者认为整理才能节省工作时间,因为没有人能记住所有的命令。 …

Linux基础
如何修改Linux内核参数?

1 前言 一个问题,一篇文章,一出故事。 笔者最近需要修改Linux服务器的内核参数,于是整理此文。 …

Linux基础
如何抓取内存和CPU占用前十进程?

1 前言 一个问题,一篇文章,一出故事。 笔者最近遇到日志内存警告,详细如下, Jan 10 13: …