-bash: fork: retry: Resource temporarily unavailable 问题解决

这篇具有很好参考价值的文章主要介绍了-bash: fork: retry: Resource temporarily unavailable 问题解决。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

错误提示: -bash: fork: retry: Resource temporarily unavailable

错误分析:之前已经出现过这种资源限制的报错提醒,然后整个系统可用的连接数就已经用完了,无法使用工具来获取系统信息,所以将运行的任务脚本kill后开多个窗口,打开top,监控资源,但是当资源限制提示出现后发现cpu和内存还有很多空余,所以猜想是linux资源限制问题。

-bash: fork: retry: Resource temporarily unavailable 问题解决,trouble shotting,linux kernel,cgroup,资源限制

因为是使用root用户跑的任务脚本,每次跑到25000左右,线程数50000左右就会出现资源限制,所以修改ulimit,将一些可能影响资源的限制放开,设置为unlimited或者设置一个较高的上限。

修改/etc/security/limits.conf 配置文件,修改软限制和硬限制

[root@130-171 security]# vim limits.conf   
root soft nofile 655360
root hard nofile 655360
* hard nproc 655350
* soft nproc 655350

修改/etc/security/limits.d/20-nproc.conf,修改进程数量限制

[root@130-171 limits.d]# cat 20-nproc.conf 
# Default limit for number of user's processes to prevent
# accidental fork bombs.
# See rhbz #432903 for reasoning.
*          soft    nproc     unlimited
root       soft    nproc     unlimited
*          hard    nproc     unlimited
root       hard    nproc     unlimited

修改完以后重启系统生效。

查看ulimit资源限制。

[root@130-171 log]# ulimit -a
core file size          (blocks, -c) unlimited
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 32133
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open files                      (-n) 655360
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) unlimited
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

继续运行任务程序后发现,资源限制仍然存在。

查看系统日志/var/log/message 过滤错误信息 fork,发现报错信息。发现是kernel内核cgroup机制限制了资源

-bash: fork: retry: Resource temporarily unavailable 问题解决,trouble shotting,linux kernel,cgroup,资源限制

在Linux系统中,用户slice(User Slice)是systemd服务管理器(systemd)用于组织和管理与用户相关的进程的一种机制。每个登录到系统的用户都会有一个对应的用户slice,用于管理该用户的所有进程。

用户slice的名称通常是user-.slice,其中是用户的实际用户ID。例如,对于用户ID为1000的用户,其用户slice名称可能是user-1000.slice。

用户slice是systemd中的一个Cgroup(控制组),Cgroups是一种用于管理进程组的机制。Cgroups可以用来限制进程的资源使用,例如CPU、内存和进程数量(PIDs)。用户slice通过Cgroups为每个用户提供一个隔离的环境,使得每个用户的进程可以独立运行,并且资源之间不会互相干扰。

当用户登录到系统时,systemd会为该用户创建一个对应的用户slice,并将用户的所有进程分配到该slice中。这样,每个用户的进程都会受到用户slice的资源限制。例如,每个用户的进程数量限制(PIDs限制)可以单独设置,这样即使某个用户的进程数量超出了限制,也不会影响其他用户的进程。

通过用户slice,系统管理员可以更好地管理和控制每个用户的进程,确保系统资源的合理分配和使用。同时,用户slice还可以为每个用户提供一种隔离的环境,防止不同用户之间的进程干扰和影响。

使用systemctl status user-0.slice 命令查看root用户的slice限制,果然是slice限制了资源。

-bash: fork: retry: Resource temporarily unavailable 问题解决,trouble shotting,linux kernel,cgroup,资源限制

可以使用命令:systemctl set-property user-0.slice TaskMax=80000来设置limit限制的task数

-bash: fork: retry: Resource temporarily unavailable 问题解决,trouble shotting,linux kernel,cgroup,资源限制

然后查看slice状态。发现已经修改完成。

-bash: fork: retry: Resource temporarily unavailable 问题解决,trouble shotting,linux kernel,cgroup,资源限制

最后再运行任务程序,发现资源限制问题没有再出现。

也可以在/etc/systemd/system.control/user-0.slice.d/50-TasksMax.conf配置文件里面来配置tasksmax参数文章来源地址https://www.toymoban.com/news/detail-627609.html

[root@130-171 user-0.slice.d]# vim 50-TasksMax.conf

# This is a drop-in unit file extension, created via "systemctl set-property"

# or an equivalent operation. Do not edit.

[Slice]

TasksMax=200000

到了这里,关于-bash: fork: retry: Resource temporarily unavailable 问题解决的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • -bash: fork: Cannot allocate memory处理

    /proc/sys/kernel/pid_max是一个系统内核参数,用于设置系统可以分配的最大进程ID(PID)数。每个新创建的进程都会被分配一个唯一的PID,该值决定了系统能够支持的最大进程数量。 /etc/security/limits.d/90-nproc.conf是一个配置文件,用于设定每个用户或用户组在系统中可同时运行的最

    2024年02月13日
    浏览(40)
  • 安装或者卸载软件时遇到trying to use is on a network resource that is unavailable

    The feature you are trying to use is on a network resource is unavailable 点击ok之后会有Click OK to try again, or enter an alternate path to afolder containing the installation package \\\'EndNote x9v19.0.0.12062 Setup(1).msi\\\' in the box below. 具体如下图所示: 博主花费一早上的时间终于解决这个问题,主要是由于 您试图使用的

    2024年02月07日
    浏览(219)
  • 【Android Studio】解决Android SDK -(unavailable)和Target folder is neither...问题

    1. JDK 是从 oracle 官网下载的,配置 Android Studio 选择 jdk 时指向对应目录,注意不是选择 Android Studio 内部的jre目录,而是选择另外下载的 JDK 的目录 2. 图示问题出现时,选择目录要在 JDK 目录下新建 Android/Sdk 目录,并选择,如图: 报错: 解决: 3.下载安装

    2024年02月06日
    浏览(37)
  • pip安装时遇到的问题解决WARNING: Retrying (Retry(total=4,connect=None, read=Noneredirect=None,status=None))

    遇到这个问题一般是连续弹出一行 网络连接超时,检查网络是否连接,如果网络连接是好的就是用了官方源,得换成国内镜像源 切换为国内镜像源: 直接命令行输入: 然后回车 等待显示有successfully字样即为安装成功 以Python3为例 1.升级pip3 2.打开并修改pip文件 添加 例如:

    2024年02月05日
    浏览(40)
  • 【爬虫 | Python】解决‘Requests Max Retries Exceeded With Url‘报错的问题

    我们在写爬虫的时候,经常会遇到这样的报错信息: HTTPConnectionPool(host=‘xxx.xxx.com’, port=443): Max retries exceeded with url: /api/v2/oauth (Caused by NewConnectionError(’urllib3.connection.HTTPConnection object at 0x7fac5953ab70: Failed to establish a new connection: [Errno 110] Connection timed out’)) 这里有3个重要的信

    2023年04月12日
    浏览(36)
  • 【anaconda报错】CondaSSLError: OpenSSL appears to be unavailable on this machine.问题记录与解决方法

    【出现问题】 在使用anaconda的时候,为新项目创建了一个新环境,顺利创建后,安装新的python包时出现了CondaSSLError报错,提示信息为: Collecting package metadata (current_repodata.json): failed CondaSSLError: OpenSSL appears to be unavailable on this machine. OpenSSL is required to download and install packages. E

    2024年04月27日
    浏览(38)
  • JDK9~17+Springboot3 @Resource常见问题和解决方案

    因为JDK版本升级的改动,在Jdk9~17环境下,搭建Springboot项目,会出现原有@Resource(javax.annotation.Resource)不存在的问题,导致项目从Jdk8迁移到高版本时遇到的问题 原因 你可能会问,为什么javax.annotation.Resource注解不存在呢?  从Jdk9开始,JavaEE从Jdk中分离,jdk就移除掉了javax.a

    2024年02月04日
    浏览(56)
  • 解决 -bash: *.sh: Permission denied 的问题

             今天,在新的开发环境中,执行sh脚本的时候,出现了下面的问题: -bash: *.sh: Permission denied。         使用ll -rt命令,看下sh脚本的权限。         未做处理之前:         可以看到,之前的sh脚本是没有执行权限标识(x)的。因此定位到原因,是 sh脚本

    2024年02月03日
    浏览(46)
  • 解决Linux:-bash: mysql: 未找到命令 问题

    1、查看MySQL服务是否启动 2、查看MySQL运行环境 3、暂停MySQL服务 4、在/etc/profile配置系统环境变量 5、让profile文件立即生效 抄录于秀_儿 解决 Failed to search for file: cannot update repo ‘appstream’: Cannot prepare internal mirrorlist: No URLs in mirrorlist 因为Centos 8已经停止维护,所以需要改变镜

    2024年02月11日
    浏览(57)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包