-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


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


  hive.server2.idle.session.timeout</name>
  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 则是通过限制每个用户或用户组的进程数量来进行资源管理。

你可能感兴趣的:(linux,linux)