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
没有评论