unable to create new native thread 问题处理

news2025/1/17 18:11:27

目录

    • unable to create new native thread 问题处理
      • 一、背景
      • 二、该问题产生可能原因
      • 三、处理过程
        • 3.1 确认内存是否不足
        • 3.2 确认机器线程数达到限制
      • 四、总结

unable to create new native thread 问题处理

一、背景

生产实时集群部分节点的部分任务失败触发自动重启,通过查看失败任务的日志发现 " java.lang.OutOfMemoryError: unable to create new native thread "异常。

二、该问题产生可能原因

  • 内存不足
  • 机器线程数达到限制

三、处理过程

3.1 确认内存是否不足
  • 首先我们确认下是否是 内存不足原因导致的,登录异常任务节点通过 free -g命令查看机器可用内存是否充足;查看机器可用内存(available)是充足的,故排除机器内存。
[root@szzb-bg-prd-sdp-dn-xx ~]# free -g
              total        used        free      shared  buff/cache   available
Mem:            755         270          14           1         469         481
Swap:             0           0           0
  • 接着我们确认是否是 Flink 任务 JVM 内存不足,异常任务重启后观察一段时间 Flink JobManager / TaskManager JVM 内存使用率,查看 JVM 使用率不高,排除此项。
    在这里插入图片描述
    在这里插入图片描述
3.2 确认机器线程数达到限制
  • 首先确认系统级别的线程数,max user processes为 655350,已修改为较大值。
[root@szzb-bg-prd-sdp-dn-xx ~]# 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) 3092399
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open files                      (-n) 655350
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) 655350
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited
[root@szzb-bg-prd-sdp-dn-xx ~]# cat /etc/security/limits.conf 
# /etc/security/limits.conf
.....

# End of file
* soft nproc 655350
* hard nproc 655350
* soft nofile 655350
* hard nofile 655350
* soft core unlimited
* hard core unlimited
  • 接着查看某个进程的线程数设置是否生效,获取到进程的 PID 后,通过命令 cat /proc/PID/limits 查看PID 的线程数;发现与系统级别一致。
[root@szzb-bg-prd-sdp-dn-xx ~]# cat /proc/29155/limits 
Limit                     Soft Limit           Hard Limit           Units     
Max cpu time              unlimited            unlimited            seconds   
Max file size             unlimited            unlimited            bytes     
Max data size             unlimited            unlimited            bytes     
Max stack size            8388608              unlimited            bytes     
Max core file size        unlimited            unlimited            bytes     
Max resident set          unlimited            unlimited            bytes     
Max processes             655350               655350               processes 
Max open files            655350               655350               files     
Max locked memory         65536                65536                bytes     
Max address space         unlimited            unlimited            bytes     
Max file locks            unlimited            unlimited            locks     
Max pending signals       3092399              3092399              signals   
Max msgqueue size         819200               819200               bytes     
Max nice priority         0                    0                    
Max realtime priority     0                    0                    
Max realtime timeout      unlimited            unlimited            us
  • 然后查看内核级别的 threads-max,通过命令 cat /proc/sys/kernel/threads-max 查看,已修改为较大值。
[root@szzb-bg-prd-sdp-dn-xx ~]# cat /proc/sys/kernel/threads-max
6184799

# echo "kernel.threads-max = 6184799" >> /etc/sysctl.conf && sysctl -p
  • 最后查看内核级别的 pid_max ,通过命令 /proc/sys/kernel/pid_max 查看,当前值为9W。
[root@szzb-bg-prd-sdp-dn-xx ~]# cat /proc/sys/kernel/pid_max
90000

通过命令cat /proc/loadavg 查看 当前的总线程数,当前值为 100734,是大于 pid_max 的,导致 "unable to create new native thread",需要修改 pid_max

[root@szzb-bg-prd-sdp-dn-xx ~]# cat /proc/loadavg 
15.23 15.75 17.25 13/100734 66544

# The first three columns measure CPU and IO utilization of the last one, five, and 10 minute periods. The fourth column shows the number of currently running processes and the total number of processes. The last column displays the last process ID used.
# 前三个数据表示 最近1分钟、5分钟、10分钟负载
# 第四个数据 分子表示正在运行的线程数,分母表示总线程数,该值会动态变化
# 最后一个数据表示 最近运行进程的PID

临时修改 pid_max 命令

echo 655350 > /proc/sys/kernel/pid_max

永久修改 pid_max命令(机器重启生效)

echo "kernel.pid_max = 655350" >> /etc/sysctl.conf && sysctl -p

修改pid_max后,观察一段时间后实时任务运行正常。

四、总结

  • 通过此次问题了解到 用户可创建的最大线程数 = min (max user processes, threads-max, pid_max)

    • max user processes 对应 ulimit -a
    • threads-max 对应 /proc/sys/kernel/threads-max
    • pid_max 对应 /proc/sys/kernel/pid_max

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Unity之铰链关节和弹簧组件

《今天闪电侠他回来了,这一次他要拿回属于他的一切》 目录 📕一、铰链关节组件HingeJoint 1. 实例 2. 铰链关节的坐标属性 ​3.铰链关节的马达属性Motor 📕二、弹簧组件 📕三、杂谈 一、铰链关节组件HingeJoint 1. 实例 说…

基于Mapbox的Mvt矢量瓦片集成实践

目录 前言 一、数据说明 1、基本数据 2、属性数据 二、Mapbox集成Mvt矢量瓦片 1、关于访问令牌 2、定义html 3、初始地图 4、加载矢量瓦片 5、效果展示 总结 前言 熟悉矢量瓦片的朋友一定知道,在Webgis当中,矢量瓦片的格式除了pbf的格式&#x…

SuperPoint和SuperGlue 的算法介绍及学习应用经验分享

这里写目录标题 I.SuperPoint和SuperGIue的背景介绍特征点提取和匹配特征点的构成基于神经网络的方法优化方向一:增强特征点检测和描述子生成优化方向二:增强匹配和外点去除策略 背景和效果神经网络真的优于传统方案吗?DEMO演示为什么研究 2.…

Servlet系列:两种创建方式(xml,注解)

一、使用web.xml的方式配置(Servlet2.5之前使用) 在早期版本的Java EE中,可以使用XML配置文件来定义Servlet。在web.xml文件中,可以定义Servlet的名称、类名、初始化参数等。然后,在Java代码中实现Servlet接口&#x…

LeetCode、2336. 无限集中的最小数字(中等,小顶堆)

文章目录 前言LeetCode、2336. 无限集中的最小数字题目链接及类型思路代码题解 前言 博主所有博客文件目录索引:博客目录索引(持续更新) LeetCode、2336. 无限集中的最小数字 题目链接及类型 题目链接:2336. 无限集中的最小数字 类型:数据…

解析HTTP响应的状态码和头部信息

HTTP响应是客户端与服务器之间通信的重要部分。它包含了服务器对客户端请求的回应,以及与该响应相关的各种信息。在HTTP响应中,有两个关键部分:状态码和头部信息。 状态码 状态码是HTTP响应的第一部分,它是一个三位数字的代码&a…

【AI】RTX2060 6G Ubuntu 22.04.1 LTS (Jammy Jellyfish) 部署Chinese-LLaMA-Alpaca-2

下载源码 cd ~/Downloads/ai git clone --depth1 https://gitee.com/ymcui/Chinese-LLaMA-Alpaca-2 创建venv python3 -m venv venv source venv/bin/activate安装依赖 pip install -r requirements.txt 已安装依赖列表 (venv) yeqiangyeqiang-MS-7B23:~/Downloads/ai/Chi…

CCF认证+蓝桥杯习题训练

贪心 *上取整公式* *代码展示* #include <iostream> #include <cstring> #include <algorithm>using namespace std;const int N 1e5 10;typedef long long LL;int v[N] , a[N];int main() {int n , d;cin >> n >> d;for(int i 1 ; i < n…

oracle19C之grant语句

官网地址&#xff1a;GRANT 欢迎关注留言&#xff0c;我是收集整理小能手&#xff0c;工具翻译&#xff0c;仅供参考&#xff0c;笔芯笔芯. 授予 目的 使用GRANT 致赠款声明: 用户和角色的系统权限。 表18-1 列出系统权限(由操作的数据库对象组织)。 注意ANY 例如,系统特权,SEL…

Spring5深入浅出篇:Spring与工厂设计模式简介

Spring5深入浅出篇:Spring与工厂设计模式简介 什么是Spring Spring是⼀个轻量级的JavaEE解决⽅案&#xff0c;整合众多优秀的设计模式轻量级 1. 对于运⾏环境是没有额外要求的开源 tomcat resion jetty收费 weblogic websphere 2. 代码移植性⾼不需要实现额外接⼝JavaEE的解…

java多线程传参数

package com.myThread;public class AdminThread extends Thread{private String name;public void AdminThread(String name){this.name name;}Overridepublic void run() {//线程开始之后执行的代码for (int i 0; i < 100; i) {System.out.print(getName()"线程…

Qt/QML编程之路:slider(34)

滑条slider&#xff0c;有时也成为进度条progressbar&#xff0c;在GUI界面中也是经常用到的。 import QtQuick 2.9 import QtQuick.Controls 2.0 import QtQuick.Layouts 1.2ApplicationWindow {id:rootvisible: truewidth: 1920height: 720//title: qsTr("Hello World&q…

matlab快速入门(读取数据并绘制散点图和拉格朗日插值

目录 1.读取excel&#xff1a;2.注释快捷键&#xff1a;3.数组/矩阵索引&#xff1a;4.绘制散点图&#xff1a;5.拉格朗日插值&#xff1a;5.1分割出非空和空的x和y两组数据&#xff1a;5.2插值&#xff1a;5.3画图&#xff1a; 小结&#xff1a; 1.读取excel&#xff1a; [nu…

《动手学深度学习》学习笔记 第9章 现代循环神经网络

本系列为《动手学深度学习》学习笔记 书籍链接&#xff1a;动手学深度学习 笔记是从第四章开始&#xff0c;前面三章为基础知识&#xff0c;有需要的可以自己去看看 关于本系列笔记&#xff1a; 书里为了让读者更好的理解&#xff0c;有大篇幅的描述性的文字&#xff0c;内容很…

Unity之触发器

目录 &#x1f4d5;一、触发器概念 &#x1f4d5;二、碰撞与触发的区别 &#x1f4d5;三、触发器小实例 一、触发器概念 第一次玩侠盗猎车手是在小学&#xff0c;从那以后就开启了我的五星好市民之路。 下面是小编在小破站截的图&#xff0c;这是罪恶都市最开始的地方&a…

数据结构奇妙旅程之二叉树初阶

꒰˃͈꒵˂͈꒱ write in front ꒰˃͈꒵˂͈꒱ ʕ̯•͡˔•̯᷅ʔ大家好&#xff0c;我是xiaoxie.希望你看完之后,有不足之处请多多谅解&#xff0c;让我们一起共同进步૮₍❀ᴗ͈ . ᴗ͈ აxiaoxieʕ̯•͡˔•̯᷅ʔ—CSDN博客 本文由xiaoxieʕ̯•͡˔•̯᷅ʔ 原创 CSDN …

深度好文:MySQL体系结构

MySQL采用的是客户/服务器体系结构&#xff0c;实际是有两个程序&#xff0c;一个是MySQL服务器程序&#xff0c;指的是mysqld程序&#xff0c;运行在存放数据库的机器上&#xff0c;负责在网络上监听并处理来自客户的服务请求&#xff0c;根据这些请求去访问数据库的内容&…

在IntelliJ IDEA中集成SSM项目

SSM项目&#xff1a;springMVC为控制器、spring 为事务层、 MyBatis 负责持久 首先看下集成后项目结构&#xff1a; 1、打开IntelliJ IDEA&#xff0c;点击 "File" -> "New" -> "Project"。 点击Finish&#xff0c;此时我们就已经创建了一…

Git怎么将文件夹上传至github,全过程

小白建议参考github文件上传全流程-新手入门系列&#xff08;超详细&#xff01;&#xff01;&#xff01;&#xff09; 中间可能会有报错 $ ssh -T gitgithub.com ssh: connect to host github.com port 22: Connection timed out 这时&#xff0c;参考&#xff0c;如何解决&a…

REVIT二次开发修改轴网

REVIT二次开发修改轴网 步骤1 步骤2 步骤3 功能实现在这 using System; using System.Collections.Generic; using System.Linq; using