当前位置: 首页 > news >正文

java.io.IOException: Too many open files

java.io.IOException: Too many open files

前言:
项目最近报 java.io.IOException: Too many open files 问题,大概意思是:意味着你的应用程序尝试打开的文件描述符数量超过了系统允许的最大数量,在linux中每个进程打开的文件描述是有一定限制的。导致项目运行不起来,找了好几天,记录一下。
在这里插入图片描述

一、问题排查

1,查看所有进程信息

-- 查看所有进程消息
jps -l
-- 找到java进程的PID
ps aux | grep 应用名称

2,下面用 lsof 命令使用讲解,排查的逻辑
lsof: list open files 【列出来打开的命令】

-- 计算<进程>打开的文件数
lsof -p <进程号> | wc -l

进程 82253 打开的文件数是 2289
系统默认是 1024
在这里插入图片描述
命令如下

-- 查看系统默认进程打开的文件个数
ulimit -n

在这里插入图片描述

二、 解决方案:

1,可以临时增加进行打开文件的个数
– 将进程打开个数临时修改为 65535
ulimit -n 65535

2,查看占用端口的文件是哪个
lsof -p xxxxx
最后发现有个关于 kafka打开的文件过多

3,将所有关于kafka关闭 进程维持在200左右问题解决

问题分析:

1,之前对接kafka 做消费者时候,是有个while(true) 循环,不断拉取数据
2,现在是有个定时器,每5分钟拉取一波数据代码如下,问题出现在 每5分钟拉取一波数据,但是consumer 始终没有关闭。要关闭consumer ,进程打开数据量是有限的。【之前对接kafka都是不断轮训拉取数据使用while(true) 循环,也管自己没有考虑到,索引进行打开的文件数始终在增加】
定时器:

    @Scheduled(cron = "0 0/5 * * * ?")public void physicalAlarmConsumerTask(){kafkaReportClient.physicalAlarmTopicConsumer();}

消费者:

public void physicalAlarmTopicConsumer(){Date currentDate = new Date();// 1.配置KafkaProperties properties = new Properties();properties.put("bootstrap.servers","xxx");properties.put("group.id","xxx");properties.put("enable.auto.commit","false");properties.put("key.deserializer", "org.apache.kafka.common.serialization.StringDeserializer");properties.put("value.deserializer", "org.apache.kafka.common.serialization.StringDeserializer");KafkaConsumer<String, String> consumer = new KafkaConsumer<>(properties);consumer.subscribe(Collections.singleton("xxxaacctopic"));// 2.消费消息ConsumerRecords<String, String> records = consumer.poll(Duration.ofMillis(5000));// 3.数据解析for (ConsumerRecord<String, String> record : records) {JSONObject jsonObject = JSON.parseObject(record.value());// TODO:业务逻辑...	}// 4.提交offsetconsumer.commitAsync(new OffsetCommitCallback() {@Overridepublic void onComplete(Map<TopicPartition, OffsetAndMetadata> offsets, Exception e) {if (e != null){log.error("xxx  commit offset is error,offsets:{},e:{}", offsets, e);} else {log.info("xxxx offset commit success");}}});}
小节

1,如果在有类似 Too many open files ,看下是哪个端口下的服务
2,lsof -P -i :xxx 【指定端口占用情况】
3,lsof -p xxx 【占用端口文件是哪个,具体分析】
4,lsof -p xxxx | wc -l
注:xxx为进程号。

喜欢我的文章记得点个在看,或者点赞,持续更新中ing…

相关文章:

java.io.IOException: Too many open files

java.io.IOException: Too many open files 前言&#xff1a; 项目最近报 java.io.IOException: Too many open files 问题&#xff0c;大概意思是&#xff1a;意味着你的应用程序尝试打开的文件描述符数量超过了系统允许的最大数量&#xff0c;在linux中每个进程打开的文件描…...

ElementUI el-form表单多层数组的校验

问题描述 提示&#xff1a;这里描述项目中遇到的问题&#xff1a; ElementUI el-form表单多层数组的校验 页面效果&#xff1a; 数据结构&#xff1a; addform: {code: ,type: ,value: ,state: 1,remark: ,fieldList: [{fieldCode: ,resolverEntities: [{resolverType: , re…...

常见的向量范数、矩阵范数和对偶范数-对偶范数详细证明过程

文章目录 对偶范数一般定义&#xff1a; p p p-范数和 q q q-范数的对偶性特例 1&#xff1a;无穷范数和 1 范数的对偶性特例 2&#xff1a;2 范数的对偶是自身特例 3&#xff1a;有限范数与 0 范数的对偶关系&#xff08;稀疏性&#xff09;特例 4&#xff1a;核范数&#xff…...

Android 滴滴面经

Android 滴滴面经 文章目录 Android 滴滴面经一面二面三面 一面 Activity的启动的四种模式&#xff0c;四种启动模式的应用场景&#xff0c;单例模式的启动场景&#xff0c;我回答的是闹钟&#xff0c;反问&#xff1a;在单例模式下闹钟运行时点击back键&#xff0c;是回退到闹…...

angular登录按钮输入框监听

说明&#xff1a;angular实现简单的登录页面&#xff0c;监听输入框的值&#xff0c;打印出来&#xff0c;按钮监听&#xff0c;打印数据 效果图: step1:E:\projectgood\ajnine\untitled4\src\app\app.config.ts import { ApplicationConfig, provideZoneChangeDetection } …...

硅谷甄选(10)用户管理

用户管理模块 9.1 静态搭建 主要是el-form、el-pagination <template><el-card style"height: 80px"><el-form :inline"true" class"form"><el-form-item label"用户名:"><el-input placeholder"请…...

Unity XR Interaction Toolkit 开发教程(2):导入 SDK【3.0 以上版本】

文章目录 &#x1f4d5;课程总结&#x1f4d5;安装 Unity 编辑器与打包模块&#x1f4d5;导入 OpenXR&#x1f4d5;导入 XR Interaction Toolkit&#x1f4d5;打包发布 获取完整课程以及答疑&#xff0c;工程文件下载&#xff1a; https://www.spatialxr.tech/ 视频试看链接&a…...

element-plus校验单个form对象合法性

在 Vue 中&#xff0c;循环生成的表单列表&#xff0c;并且每个表单中包含多个对象&#xff0c;使用 v-for 来创建这些表单&#xff0c;并且使用动态 prop 路径来验证单个对象是否满足必填校验。 <template><el-form ref"formRef" :model"form" …...

Linux常见命令合集

目录 1.ls 列出指定目录下的文件和和文件夹 2.cd change directory 切换目录 3. cat 查看文件 4.more 分屏查看文件 5.tail从后往前查看指定文件 6.mkdir 创建目录 7.rm强制删除指定目录和文件 8.cp复制文件和目录 9.mv移动和重命名命令 10.tar命令打包和拆包 重点是…...

__init__.py __all__和 __name__的作用及其用法

__ init__.py 的作用及其用法&#xff1a; 包下的__init__.py 所在目录是一个模块包,本身也是一个模块,可用于定义模糊导入时要导入的内容。当我们导入一个包的时候&#xff0c;包下的__init__.py中的代码会自动执行&#xff0c;因此在某些大的项目被使用频率较高的模块&#x…...

js操作数组的方法 / js操作字符串的方法

操纵数组的方法 常见的有10种 push() -在数组末尾添加一个或多个元素&#xff0c;并返回新的长度。 pop() -删除数组的最后一个元素&#xff0c;并返回那个元素。 shift() -删除数组的第一个元素&#xff0c;并返回那个元素。 unshift() -在数组的开始添加一个或多个元素&…...

Docker 部署RocketMQ

FROM: Docker安装RocketMQ教程_docker 安装rocketmq-CSDN博客...

Linux(Cent OS)环境离线安装mkfontscale mkfontdir命令 解决java项目在linux系统下无法获取中文字体问题

https://download.csdn.net/download/mlc19860417/89938093 1 附件下载 1.libfontenc-1.1.3-3.amzn2.0.2.x86_64.rpm 2.libXfont-1.5.2-1.amzn2.0.2.x86_64.rpm 3.xorg-x11-font-utils-7.5-20.amzn2.0.2.x86_64.rpm 4.fontpackages-filesystem-1.44-8.amzn2.noarch.rpm 5.sti…...

计算堆栈中的剩余数字

更多关于刷题的内容欢迎订阅我的专栏华为刷题笔记 该专栏题目包含两部分&#xff1a; 100 分值部分题目 200 分值部分题目 所有题目都会陆续更新&#xff0c;订阅防丢失 题目描述&#xff1a; 向一个空栈中依次存入正整数&#xff0c; 假设入栈元素 n ( 1 < n < 2…...

笔记:mysql升级 5.6至5.7

说明 一台已有数据的机器&#xff0c;停机升级&#xff0c;从MySQL Server5.6.48&#xff0c;升级到 5.7.38。 环境介绍 10.24.10.247&#xff0c;Mysql 5.6.48 CentOS Linux release 7.9.2009 (Core) 32G内存、500G数据盘/home&#xff1b; 实际数据量约120M&#xff0c;2个…...

前端的全栈Deno篇(五):与前端保持一致的模块化方案,摆脱ERR_REQUIRE_ESM和mjs、cjs等模块混乱带来的心智负担

在现代JavaScript开发中&#xff0c;模块化系统的演变经历了多次变革&#xff0c;使得前端和后端开发人员在选择模块加载方式时常常感到困惑。尤其是Node.js所采用的CommonJS和ESM&#xff08;ECMAScript Modules&#xff09;两种模块体系&#xff0c;以及文件扩展名的多样性&a…...

与外部公司做数据交互时,需要注意哪些事情?

在现代企业系统中&#xff0c;数据交互已成为日常业务流程的核心部分。与外部公司进行数据交换可以带来业务合作和资源共享的机会&#xff0c;但也带来了数据安全、协议兼容性、合规性等方面的挑战。本文将深入探讨在与外部公司进行数据交互时需要关注的关键事项&#xff0c;并…...

基于hive分析Flask为后端框架echarts为前端框架的招聘网站可视化大屏项目

基于hive分析Flask为后端框架echarts为前端框架的招聘网站可视化大屏项目 1. 项目概述 项目目标是构建一个大数据分析系统&#xff0c;包含以下核心模块&#xff1a; 1、数据爬取&#xff1a;通过request请求获取猎聘网的就业数据。 2、数据存储和分析&#xff1a;使用 Hive …...

Ansible 部署应用

Ansible Ansible 是基于 Python 开发&#xff0c;集合了众多优秀运维工具的优点&#xff0c;实现了批量运行命令、部署程序、配置系统等功能的自动化运维管理工具。默认通过 SSH 协议进行远程命令执行或下发配置&#xff0c;无需部署任何客户端代理软件&#xff0c;从而使得自动…...

使用Docker Swarm进行集群管理

&#x1f493; 博客主页&#xff1a;瑕疵的CSDN主页 &#x1f4dd; Gitee主页&#xff1a;瑕疵的gitee主页 ⏩ 文章专栏&#xff1a;《热点资讯》 使用Docker Swarm进行集群管理 Docker Swarm简介 安装Docker 在Ubuntu上安装Docker 在CentOS上安装Docker 在macOS上安装Docker …...

Alberta Wells数据集:从213,000个井位到全球环境监测,计算机视觉如何重塑油气设施追踪

1. 油气井监测的全球挑战与环境意义 想象一下&#xff0c;你正站在加拿大阿尔伯塔省广袤的草原上&#xff0c;脚下可能就隐藏着数十个被遗忘的油气井。这些钢铁结构的"时间胶囊"有的已经沉寂数十年&#xff0c;却仍在持续释放比二氧化碳强效84倍的甲烷气体。这就是全…...

让屏幕标注像在纸上写字一样自然:gInk 三分钟上手指南

让屏幕标注像在纸上写字一样自然&#xff1a;gInk 三分钟上手指南 【免费下载链接】gInk An easy to use on-screen annotation software inspired by Epic Pen. 项目地址: https://gitcode.com/gh_mirrors/gi/gInk 你是否曾经在线上会议中&#xff0c;想快速圈出PPT的重…...

GitHub OCaml项目:C++后端突破与代码编译新变革

【导语&#xff1a;GitHub的OCaml项目迎来重要升级&#xff0c;开发者stedolan提交补丁为ocamlc添加新的C后端&#xff0c;改进运行时和FFI使用的非增量C代码&#xff0c;这一突破将为代码编译带来新的可能。】OCaml新添C后端&#xff1a;代码编译新途径开发者stedolan希望将2次…...

从零到一:基于51单片机与DS1302的智能万年历系统设计与实现

1. 项目背景与核心功能 每次看到桌面上那些动辄几百块的智能时钟&#xff0c;我都会想&#xff1a;这东西真的需要这么贵吗&#xff1f;作为一个玩了多年51单片机的老鸟&#xff0c;我决定用最基础的STC89C52芯片搭配DS1302时钟模块&#xff0c;打造一个功能不输商业产品的智能…...

EcomGPT-7B模型文件结构与代码解读:从Hugging Face到生产部署

EcomGPT-7B模型文件结构与代码解读&#xff1a;从Hugging Face到生产部署 如果你已经玩过一些开箱即用的AI模型&#xff0c;可能会好奇&#xff0c;一个像EcomGPT-7B这样的模型&#xff0c;它到底是由哪些文件组成的&#xff1f;那些配置文件里密密麻麻的参数都是什么意思&…...

DLSS Swapper技术解析:3层架构实现游戏性能优化自动化

DLSS Swapper技术解析&#xff1a;3层架构实现游戏性能优化自动化 【免费下载链接】dlss-swapper 项目地址: https://gitcode.com/GitHub_Trending/dl/dlss-swapper DLSS Swapper作为一款专注于DLSS、FSR和XeSS动态链接库管理的开源工具&#xff0c;通过创新的三层架构…...

模型压缩新选择:用LLaMA-Factory实现QLoRA+GPTQ双重量化(附CUDA配置)

模型压缩新选择&#xff1a;用LLaMA-Factory实现QLoRAGPTQ双重量化实战指南 当大语言模型的参数量突破百亿级别&#xff0c;如何在消费级显卡上实现高效推理成为开发者面临的核心挑战。传统单一量化方法往往需要在精度和效率之间艰难取舍&#xff0c;而混合量化技术正在打开新的…...

广州邮科如何为你的系统选择合适的在线式充电机?

设备运行最怕断电。在线式充电机&#xff0c;就是那个能让设备“永不断电”的充电神器。今天咱们用大白话&#xff0c;把它讲清楚。它到底是什么&#xff1f;简单说&#xff0c;就是能一边给设备供电&#xff0c;一边给电池充电的智能设备。设备不用停机&#xff0c;电池也能充…...

2026 年 GEO 优化公司推荐:6家服务商综合实力对比分析

一、GEO 行业进入合规技术双轮驱动的爆发期IDC 最新发布的《2026年全球生成式引擎优化市场报告》显示&#xff0c;2026年全球 GEO&#xff08;生成式引擎优化&#xff09;市场规模将达 220 亿美元&#xff0c;年复合增长率高达 122%&#xff0c;中国市场规模预计突破 480 亿元&…...

OrangepiZERO3驱动USB摄像头的记录

关于orangepiZERO3的官方文档&#xff1a; http://www.orangepi.cn/orangepiwiki/index.php/Orange_Pi_Zero_3 按照里面有关的步骤进行操作&#xff0c;但是可能会有一点小问题&#xff0c;特此记录一下 第一步和第二步一致&#xff0c;不多说。 第三步&#xff1a; 我的命令…...