“-bash: fork: 无法分配内存”,发现连了好多终端,然后断开了一个终端,然后这边终端可以敲命令了

[root@172.16.31.105 /home/www/test]# free -m
             total       used       free     shared    buffers     cached
Mem:         15979       8025       7954          0        218       1109
-/+ buffers/cache:       6697       9282
Swap:            0          0          0

卧槽,还有那么多内存。。。很无语,然后又开始敲命令,结果又报刚才那个问题“-bash: fork: 无法分配内存”,另外一个终端连接也出问题了

[root@172.16.31.102 ~]# ssh 172.16.31.105
shell request failed on channel 0

网上说老版本系统的内核pid参数比较小(默认设置的是32768),验证了一下,然后我又断开一个终端,这边ps了一下

[root@172.16.31.105 ~]# ps
  PID TTY          TIME CMD
32775 pts/1    00:00:00 bash
32765 pts/1    00:00:00 ps

很明显ps的pid号明显接近于内核默认pid了,立即修改内核pid,并让其生效命令如下:

echo "kernel.pid_max=64000" >>/etc/sysctl.conf

sysctl -p

生效后,终端立刻就可以直连这台机器了。

再次验证

找了另外一台机器,先多连几个终端,之后将内核pid改小最好近似于当前pid最大值,改完生效后马上问题就出来了 报 “-bash: fork: 无法分配内存”  接着内核参数

注意:有的机器pid用的比较严重,敲好多次命令都会报“-bash: fork: 无法分配内存”   因此只能重启服务器,运气好的话多敲几次命令就可以看到。

(二)

还有种情况是系统当前的的进程数 太多太多,报-bash: fork: 无法分配内存

后来发现是因为非root用户打开的进程数太多  解决方法

普通用户的nproc必须配置这个文件才能生效

vi /etc/security/limits.d/90-nproc.conf

# Default limit for number of user's processes to prevent
# accidental fork bombs.
# See rhbz #432903 for reasoning.
*          soft    nproc     111111
root       soft    nproc     unlimited
 
[root@db-172-16-3-150 ~]# ulimit -u
131073
[root@db-172-16-3-150 ~]# su - postgres
postgres@db-172-16-3-150-> ulimit -u
111111

普通用户用了/etc/security/limits.d/90-nproc.conf 软限制的配置, 而root用户用了/etc/security/limits.conf硬限制的配置.
如果是root打开进程数太多修改

vim  /etc/security/limits.conf

添加:

* soft nproc 32000
* hard nproc 32000

有关limits.conf参数的注释

- core - 限制核心文件大小(KB)
- data - 最大数据大小(KB)
- fsize - maximum filesize(KB)
- memlock - 最大锁定内存地址空间(KB)
- nofile - 最多打开的文件
- rss - max resident set size(KB)
- stack - 最大堆栈大小(KB)
- cpu - 最大CPU时间(MIN)
- nproc - 最大进程数
- as - 地址空间限制(KB)
- maxlogins - 此用户的最大登录号
- maxsyslogins - 系统上登录的最大数量
- priority - 运行用户进程的优先级
- locks - 用户可以容纳的文件锁的最大数量
- sigpending - 待处理信号的最大数量
- msgqueue - POSIX消息队列使用的最大内存(字节)
- nice - 最大优先级允许提高到值:[-20,19]
- rtprio - 最大实时优先级

注:可能导致这种错误的有很多很多,后面如有发现继续更新

当linux报 “-bash: fork: 无法分配内存”的更多相关文章

  1. Linux设备驱动程序学习之分配内存

    内核为设备驱动提供了一个统一的内存管理接口,所以模块无需涉及分段和分页等问题. 我已经在第一个scull模块中使用了 kmalloc 和 kfree 来分配和释放内存空间. kmalloc 函数内幕 ...

  2. 切换普通用户报 -bash: fork: retry: No child processes

    ssh 连接普通用户 报这个错误 -bash: fork: retry: No child processes 解决办法: 更改vi /etc/security/limits.d/20-nproc.c ...

  3. -bash: fork: Cannot allocate memory 问题的处理

    今天生产机器突然无法登录了,正好有一个用top挂着,但是退出top,执行任何命令都报-bash: fork: Cannot allocate memory,但是查看内存还是有很多空闲,然后在百度上查了 ...

  4. linux. -bash: fork: retry: Resource temporarily unavailable错误

    切换用户或登陆服务器后执行ls命令报错: -bash: fork: retry: Resource temporarily unavailable 上面这段错误提示的本质是Linux操作系统无法创建更 ...

  5. Atlas运行时资源不足报错 -bash: fork: retry: 资源暂时不可用 Out of system resources

    目的:运行Atlas并使用Azkaban执行操作任务 环境:Centos 6 内存大小:12G 启动下面的任务后还剩内存将近5G 问题: 当mysql_to_hdfs_db和其他job同时运行时集群很 ...

  6. 【解决方法】安装Win7和linux双系统后,linux报错“无法分配所提交的分区 not enough free space on disks”问题,以及win7无法启动“BootMGR image is corrupt....”问题

    近日,在笔记本上重装了Win7 企业版(64位)后,想装个linux双系统,于是开始安装 centOS 6.2(光盘安装) 硬盘分了一个主分区(c盘),一个扩展分区(3个逻辑分区:d,e,f盘),然后 ...

  7. linux设备驱动归纳总结(五):1.在内核空间分配内存【转】

    本文转载自:http://blog.chinaunix.net/uid-25014876-id-79134.html linux设备驱动归纳总结(五):1.在内核空间分配内存 xxxxxxxxxxxx ...

  8. 高端内存映射之vmalloc分配内存中不连续的页--Linux内存管理(十九)

    1 内存中不连续的页的分配 根据上文的讲述, 我们知道物理上连续的映射对内核是最好的, 但并不总能成功地使用. 在分配一大块内存时, 可能竭尽全力也无法找到连续的内存块. 在用户空间中这不是问题,因为 ...

  9. alloc_page分配内存空间--Linux内存管理(十七)

    1 前景回顾 在内核初始化完成之后, 内存管理的责任就由伙伴系统来承担. 伙伴系统基于一种相对简单然而令人吃惊的强大算法. Linux内核使用二进制伙伴算法来管理和分配物理内存页面, 该算法由Know ...

随机推荐

  1. Magento Meigee-Glam 主题的用法

    Start起点 Package Structure包装结构 License许可证 Installation安装 What's new Updated!更新了什么! Theme options主题选项 ...

  2. VirtualBox下安装linux虚拟机

    下载VirtualBox 下载地址:https://www.virtualbox.org/wiki/Downloads 安装VirtualBox 安装虚拟机 如果选择不到64位系统, 开机按 F1 进 ...

  3. 无法获得锁 /var/lib/dpkg/lock - open (11: 资源暂时不可用) ubuntu 安装vim 及遇到的错误处理

    今天,处理完问题,闲来无事,打算在虚拟机中的Ubuntu中练习shell脚本编写. 无奈,虚拟机系统所装的只有vi,这个编辑软件对于我们来说还是比较不习惯的,所以打算安装vim.好了,闲言少叙. 安装 ...

  4. bootstrap学习: 折叠插件和面板

    bootstrap提供了面板排版工具和折叠插件,能够用来实现新闻列表.留言板.博客分块等: 1.折叠插件: <a data-toggle="collapse" data-ta ...

  5. busybox(三)最小根文件系统

    目录 busybox(三)最小根文件系统 引入 构建终端 构造inittab 配置应用程序 构建C库 制作映像文件yaffs title: busybox(三)最小根文件系统 tag: arm dat ...

  6. openstack项目【day23】:keystone组件基础

    本节内容 一 什么是keystone 二 为何要有keystone 三 keystone的功能 四 keystone概念详解 五 keystone内包含的组件 六 keystone与openstack ...

  7. kubernetes云平台管理实战: 最小的资源pod(二)

    一.pod初体验 1.编辑k8s_pod.yml文件 [root@k8s-master ~]# cat k8s_pod.yml apiVersion: v1 kind: Pod metadata: n ...

  8. CSS margin负值学习及实际应用

    前言 margin属性在实际中非常常用,也是平时踩坑较多的地方.margin折叠部分相信不少人都因为这样那样的原因中过招.margin负值也是很常用的功能,很多特殊的布局方法都依赖于它. 表现 虽然m ...

  9. SpringBoot系列: Web应用鉴权思路

    ==============================web 项目鉴权============================== 主要的鉴权方式有:1. 用户名/密码鉴权, 然后通过 Sess ...

  10. 搞数学的牛群[主要PDE的]