-bash: fork: Cannot allocate memory处理

一、报错

#ssh登录后提示
-bash: fork: Cannot allocate memory

二、问题处理

#查看最大进程数 sysctl kernel.pid_max
sysctl kernel.pid_max
#查看进程数
ps -eLf | wc -l
#确认是进程数满了
#处理方式一
#修改最大进程数后系统恢复
#
echo 1000000 > /proc/sys/kernel/pid_max
#处理方式二
#永久生效
echo "kernel.pid_max=1000000 " >> /etc/sysctl.conf
sysctl -p
#此服务器是hive问题,删除hiveserver2进程后,进程数小了
#修改hiveserver2配置
#配置位置/opt/ben/core/hive/conf/hive-site.yml

<property>
  <name>hive.server2.session.check.interval</name>
  <value>60000</value>
</property>

<property>
  <name>hive.server2.idle.session.timeout</name>
  <value>3600000</value>
</property>

三、/etc/security/limits.d/90-nproc.conf和/proc/sys/kernel/pid_max配置文件的区别

/proc/sys/kernel/pid_max是一个系统内核参数,用于设置系统可以分配的最大进程ID(PID)数。每个新创建的进程都会被分配一个唯一的PID,该值决定了系统能够支持的最大进程数量。

/etc/security/limits.d/90-nproc.conf是一个配置文件,用于设定每个用户或用户组在系统中可同时运行的最大进程数。它是通过软件层面的限制来控制进程的数量,以确保资源分配合理、防止过度占用系统资源等。

区别在于:

1、/proc/sys/kernel/pid_max 是系统级别的设置,影响整个操作系统的进程数量。而 /etc/security/limits.d/90-nproc.conf 是针对每个用户或用户组的个别限制,用于限制特定用户或组的进程数量。
2、/proc/sys/kernel/pid_max 设置的是所有进程的上限,包括系统进程和用户进程,而 /etc/security/limits.d/90-nproc.conf 只限制用户进程的数量。
3、/proc/sys/kernel/pid_max 的修改需要超级用户权限,而 /etc/security/limits.d/90-nproc.conf 的修改通常由系统管理员或具有适当权限的用户进行。

综上所述,/proc/sys/kernel/pid_max 通过设置进程ID的上限来控制系统的整体进程数量,而 /etc/security/limits.d/90-nproc.conf 则是通过限制每个用户或用户组的进程数量来进行资源管理。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值