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

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

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

因为是使用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机制限制了资源

在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限制了资源。

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

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

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

也可以在/etc/systemd/system.control/user-0.slice.d/50-TasksMax.conf配置文件里面来配置tasksmax参数

[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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/76122.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【运维工程师学习八】代理及安装配置Nginx反向代理

【运维工程师学习八】代理 正向代理一、使用正向代理的主要作用有:二、反向代理三、使用反向代理的主要作用有:四、透明代理五、各种代理的主要区别六、Nginx的安装七、了解nginx的文件位置八、了解nginx程序的命令行参数九、开启nginx反向代理十、解读n…

less的使用

less的介绍: less使用 1、 less使用的第一种用法,起变量名,变量名区分大小写: 这里我们定义一个粉色变量 我想使用直接把变量拿过来就行 2、vscode使用插件,直接将Css文件转换less文件: 3、第二种用法&…

【力扣每日一题】2023.8.5 合并两个有序链表

目录 题目: 示例: 分析: 代码: 题目: 示例: 分析: 题目给我们两个有序的链表,要我们保持升序的状态合并它们。 我们可以马上想要把两个链表都遍历一遍,把所有节点的…

android Android Studio Giraffe | 2022.3.1 版本Lombok不兼容 解决方案

android Android Studio Giraffe | 2022.3.1 版本Lombok不兼容 解决方案 1.查看当前的android studio 版本 Android Studio Giraffe | 2022.3.1 Build #AI-223.8836.35.2231.10406996, built on June 29, 2023 2.打开 idea 官网下载页面 idea下载历史版本 找到对应的版本编号…

MySQL 与MongoDB区别

一、什么是MongoDB呢 ? MongoDB 是由C语言编写的,是一个基于分布式文件存储的开源数据库系统。在高负载的情况下,添加更多的节点,可以保证服务器性能。 MongoDB 旨在为WEB应用提供可扩展的高性能数据存储解决方案。 MongoDB 将数据存储为一…

集中/本地转发、AC、AP

1.ADSL ADSL MODEM(ADSL 强制解调器)俗称ADSL猫 ADSL是一种异步传输模式(ATM)。ADSL是指使用电话线上网,需要专用的猫(Modem),在上网的时候高频和低频分离,所以上网电话两不耽误,速…

Vue命名规范

JS文件命名 一般采用的是小驼峰命名法,如 pieChartHelp 第一个单词小写,其他单词首字母大写 Components 文件命名 一般采用的是大驼峰命名法,如PieChart 所有单词的首字母大写 常量命名 一般全部大写,每个单词使用分隔符隔开&…

若依打印sql

官方issue 自动生成的代码,sql日志怎么没有打印 在ruoyi-admin中的application.yml配置如下。 # 日志配置,默认 logging:level:com.ruoyi: debugorg.springframework: warn#添加配置com.ying: debug输出sql

网络基础1

文章目录 网络基础11. 计算机网络背景1.1 网路发展1.2 认识 "协议" 2. 网络协议初识2.1 协议分层2.2 OSI七层模型2.3 TCP/IP五层(或四层)模型协议栈与OS的关系 3. 网络传输基本流程3.1 同一个局域网两台主机通信3.2 同一个路由器的两个子网通信 4. 网络中的地址管理4…

PHP国外在线教育系统源码 在线课程系统源码 直播课程系统源码提供在线课程,现场课程,测验

Proacademy是在线教育一体化的解决方案,用于创建类似于Udemy、Skillshare、Coursera这种在线教育市场。 这个平台提供在线课程,现场课程,测验等等,并有一个基于实际业务需要的高级认证插件,程序基于Laravel强大的安全框…

通过51单片机实现直流电机调速

一、项目背景及目的 随着各种工业生产设备和机械设备的广泛使用,直流电机调速技术的研究和应用越来越受到人们的重视,具有广泛的应用前景。本项目通过51单片机实现直流电机调速功能,为实际工程应用提供一个可靠和有效的调速方案。 二、设计思…

基于LLM的SQL应用程序开发实战(二)

基于LLM的SQL应用程序开发实战(二) 16.2 使用LangChain SQL代理 回到案例应用本身,我们使用“Run All”的方式重新运行一下,让大家看见更多内部的内容,如图16-5所示,因为在VSCode代码编辑器中,可以看见Jupyter关于当前应用的变量(variable)。 图16- 5 查询Jupyter V…

嵌入式:C高级 Day3

一、整理思维导图 二、判断家目录下,普通文件的个数和目录文件的个数 三、输入一个文件名,判断是否为shell脚本文件,如果是脚本文件,判断是否有可执行权限,如果有可执行权限,运行文件,如果没有可…

【SQL应知应会】表分区(四)• Oracle版

欢迎来到爱书不爱输的程序猿的博客, 本博客致力于知识分享,与更多的人进行学习交流 本文收录于SQL应知应会专栏,本专栏主要用于记录对于数据库的一些学习,有基础也有进阶,有MySQL也有Oracle 分区表 • Oracle版 前言一、分区表1.什么是表分区…

phpstudy 进行 composer 全局配置

背景 因为注意到,使用 phpStudy 进行环境搭建时,有时需要使用 composer 每次都需要查找资料进行配置, 在此进行记录笔记,方便有需要的道友借鉴 配置 版本:composer1.8.5(phpStudy8 当前只能安装这一个版本…

MicroPython ESP32网页实时更新DHT11数据显示

MicroPython ESP32网页实时更新DHT11数据显示 📌相关篇《MicroPython ESP32 读取DHT11温湿度传感器数据》📍《【Micropython esp32/8266】网页点灯控制示例》 ✨本例综合以上两篇文章内容实现:在本地网页中显示DHT11温度传感器数据。可以做到…

git merge 和rebase区别

Merge the incoming changes into the current branch 找到两个分支的祖先 commit,然后将公共分支最新版合并到自己的分支,形成一个新的 commit 提交,用图表示如下。 Rebase the current branch on top of the incoming Rebase 则是重新基于…

3d 地球与卫星绕地飞行

1 创建场景 2 创建相机 3 创建地球模型 4 创建卫星中心 5 创建卫星圆环及卫星 6 创建控制器 7 创建渲染器 <template><div class"home3dMap" id"home3dMap"></div> </template><script> import * as THREE from three impo…

计算机网络——学习笔记

付费版&#xff1a;直接在上面的CSDN资源下载 免费版&#xff1a;https://wwsk.lanzouk.com/ijkcj13tqmyb 有疑问或者错误的地方可以在评论区指出&#xff0c;我会尽快回复 示例图&#xff1a;

Linux操作系统块设备参数调优

目录 一、队列深度 二、调度算法 三、预读量 四、I/O对齐 一、队列深度 队列深度决定了给块设备写I/O的最大并发数&#xff0c;对于Linux系统&#xff0c;默认值为128&#xff0c;一般情况下不建议用户修改此参数。用户可以使用cat命令查询当前块设备队列深度。 linux-ob3a…