TDengine too many open files

too many open files 是比较常见的报错,尤其使用TDengine 3.0 集群时,大概率会遇到。这个报错很简单,但要想顺利解决,却涉及到很多知识点。

目录

    • 知识点:fs.nr_open
    • 知识点:file-max & fs.file-nr
    • 知识点:limits.conf
    • 知识点:LimitNOFILE
    • 知识点:ulimit
    • 知识点:prlimit

知识点:fs.nr_open

官方说明:This denotes the maximum number of file-handles a process can allocate. Default value is 1024*1024 (1048576) which should be enough for most machines. Actual limit depends on RLIMIT_NOFILE resource limit.

单个进程能够打开的最大句柄数量,大部分同学看到too many open files 时想到的参数。这个参数时操作系统全局变量,天花板级的参数,决定了进程能够打开最大句柄数量。可动态修改,最大值:2147483584(x64环境)

sysctl -w fs.nr_open=2147483584

知识点:file-max & fs.file-nr

官方说明: The value in file-max denotes the maximum number of file- handles that the Linux kernel will allocate. When you get lots of error messages about running out of file handles, you might want to increase this limit.

Historically,the kernel was able to allocate file handles dynamically,
but not to free them again. The three values in file-nr denote the
number of allocated file handles, the number of allocated but unused
file handles, and the maximum number of file handles. Linux 2.6 and
later always reports 0 as the number of free file handles – this is
not an error, it just means that the number of allocated file handles
exactly matches the number of used file handles.

我们可用通过查询fs.file-nr,来获得当前系统已打开的句柄数量和支持的最大数量。当我们修改fs.nr_open 时会发现 fs.file-nr中的最大值并没有变化,因为最大值是有 fs.file-max 控制的。如果我们单独修改 fs.nr_open 并不能获得想要的效果。
在这里插入图片描述
在这里插入图片描述
对于fs.file-max 的最大值不同的操作系统限制也不同。

操作系统版本file-max最大值
RHEL4/52147483647
RHEL618446744073709551615
RHEL7.7-18446744073709551615
RHEL7.8+9223372036854775807
RHEL89223372036854775807
RHEL99223372036854775807

知识点:limits.conf

通过limits.conf 可设置用户初始化参数

root soft nproc  65536
root soft nofile 65536
root soft stack  65536
root hard nproc  65536
root hard nofile 65536
root hard stack  65536

注意:RHEL7/CentOS7 以后的系统limits.conf文件只影响通过pam登录的用户。

知识点:LimitNOFILE

以上提到了limits.conf 只影响用户,对于服务进程,需要通过配置启动文件中LimitNOFILE参数来限制。
如果LimitNOFILE没有配置或配置为infilty,则默认取fs.nr_open 数值。

在这里插入图片描述

注意:systemd 234版本以下不支持infinity参数,而CentOS 7 的systemd 版本是219。

知识点:ulimit

用户的最大打开句柄数会在操作系统启动时通过limits.conf 中数值进行初始化。操作系统启动后,可通过ulimit 进行动态修改。

ulimit -n 1048576

在这里插入图片描述

知识点:prlimit

ulimit 只能动态修改用户相关参数,如果想动态修改进程参数,则需要使用prlimit

prlimit --nofile=2147483584 -p `pidof taosd`

在这里插入图片描述

引用:
[1] Documentation for /proc/sys/fs/
[2]What is the default value and the max value range for fs.file-max in Red Hat Enterprise Linux?
[3]What is the maximum value and default value for fs.nr_open in Red Hat Enterprise Linux?

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

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

相关文章

stl set 的 insert()

set 跟 map 容器很像,但它俩又有很大的不同,它们的底层实现都是树,元素都是有序的,但map是可以修改元素的,而 set 就不行了,set 里的元素只有删除的情况,没有修改的情况;所以发现没有…

客户关系处理成功秘籍

目录 绪论: 第一章:客户关系管理概述 1.1 客户关系管理简介 1.2 客户关系管理的重要性 1.3 CRM的目标和原则 1.4 本章小结 第二章:建立客户数据库 2.1 客户数据库的重要性 2.2 建立客户数据库的步骤 2.3 数据库管理系统(DBMS) 2.4 数据分析工具 2.5 数据库安全…

数据治理(二)-基线治理

本文只是大概讲,基线任务治理方法,分为从基线owner和节点owner角度讲述分为两个部分: 1.基线治理(从基线Owner角度) Owner离职/转岗。 基线配置不合理。 高频预警/破线治理。 应急不及时治理。 2.基线任务治理(从节点Onwer) 2.1模型治…

Linux多进程通信(4)——消息队列从入门到实战!

Linux多进程通信总结——进程间通信看这一篇足够啦! 1.基本介绍 1)消息队列的本质其实是一个内核提供的链表,内核基于这个链表,实现了一个数据结构,向消息队列中写数据,实际上是向这个数据结构中插入一个…

怎样系统地学习自动化测试?

🍅 视频学习:文末有免费的配套视频可观看 🍅 关注公众号:互联网杂货铺,回复1 ,免费获取软件测试全套资料,资料在手,涨薪更快 平时的测试工作其实细分一下,大概有三个领域…

rust zip异步压缩与解压

在使用actix-web框架的时候,如果使用zip解压任务将会占用一个工作线程,因为zip库是同步阻塞的,想用异步非阻塞需要用另一个库,下面列出同步解压,跟异步解压的两个方法实现,异步解压不会占用工作线程。注意&…

C++ 线程库(thread)与锁(mutex)

一.线程库(thread) 1.1 线程类的简单介绍 thread类文档介绍 在C11之前,涉及到多线程问题,都是和平台相关的,比如windows和linux下各有自己的接口,这使得代码的可移植性比较差。C11中最重要的特性就是对线程进行支持了&#xff…

操作系统的基础知识:操作系统的特征:并发,共享,虚拟,异步

操作系统的特性: 1.并发 并发:指两个或多个事件在同一时间间隔内发生。这些事件宏观上是同时发生的,但微观上是交替注意:并行:指两个或多个事件在同一时刻同时发生。 操作系统的并发性指计算机系统中“同时”运行着多个程序,这…

graphicLayer.startDraw({开启连续绘制isContinued之后,无法获取连续标绘的坐标数据

摘要:graphicLayer.startDraw({开启连续绘制isContinued之后,无法获取连续标绘的坐标数据的解决方案 问题前景: graphicLayer.startDraw({开启连续绘制isContinued之后,.then()方法只走一次,无法获取连续标绘的所有坐…

Qt中显示hex数据的控件

效果类似QTextEdit,但是显示十六进制的数据,比如用于显示抓取串口或者bin文件的数据等等 chunks.h #ifndef CHUNKS_H #define CHUNKS_H/** \cond docNever *//*! The Chunks class is the storage backend for QHexEdit.** When QHexEdit loads data, C…

Java中的循环语句

目录 第一章、Java中的for循环介绍for循环for-each/增强for循环嵌套for循环 第一章、遍历List集合的几种方式简单的for循环增强型for循环Iterator迭代器ListIterator列表迭代器while循环Iterable.forEach()方法Stream.forEach()方法 第一章、Java中的for循环介绍 for循环 ①普…

【Linux】shell 脚本基础使用

在终端中输入命令可以完成一些常用的操作,但是我们都是一条一条输入命令,比较麻烦,为了解决这个问题,就会涉及到 shell 脚本,它可以将很多条命令放到一个文件里面,然后直接运行这个文件即可。 shell 脚本类…

【3GPP】【核心网】核心网/蜂窝网络重点知识面试题二(超详细)

1. 欢迎大家订阅和关注,3GPP通信协议精讲(2G/3G/4G/5G/IMS)知识点,专栏会持续更新中.....敬请期待! 目录 1. 对于主要的LTE核心网接口,给出运行在该接口上数据的协议栈,并给出协议特征 2. 通常…

Centos7使用docker安装Jenkins(含pipeline脚本语句)

一、下载Jenkins docker pull jenkins/jenkins:lts 二、启动Jenkins docker run \-u root \--rm \-d \-p 8081:8080 \-p 50000:50000 \-v /root/docker/jenkins/var/jenkins_home:/var/jenkins_home \-v /var/run/docker.sock:/var/run/docker.sock \-v /usr/bin/docker:/usr…

番外篇 | YOLOv8改进之引入YOLOv9的ADown模块 | 替换YOLOv8卷积

前言:Hello大家好,我是小哥谈。YOLOv9是一种目标检测算法,而ADown模块是YOLOv9中的一个重要组成部分。ADown模块主要用于特征提取和下采样操作,以便在后续的检测任务中更好地捕捉目标的特征。具体来说,ADown模块是YOLOv9中的一个卷积块,由一系列卷积层和池化层组成。它的…

spring boot —— Spring-Cloud-Zuul(网关服务getway),kafka笔记

一、 引入zuul依赖: org.springframework.cloud spring-cloud-starter-zuul 二、创建应用主类。使用EnableZuulProxy注解开启zuul的API网关服务功能: EnableZuulProxy SpringCloudApplication public class Application { public static void mai…

FPN(Feature Pyramid Network)详解

文章涉及个人理解部分,可能有不准确的地方,敬请指正 0. 概述 FPN,全名Feature Pyramid Networks,中文称为特征金字塔网络。它是2017年cvpr上提出的一种网络,主要解决的是目标检测中的多尺度问题。FPN通过简单的网络连…

第十四届蓝桥杯省赛真题-幸运数

代码及解析: #include <iostream> using namespace std;bool check(int x) {int tmpx,len0;while(tmp){len;tmp/10;}//算位数的方法 if(len%21)return 0;//直接retrun 0 int tlen/2;int ans10,ans20;while(t--){ans1x%10;//加每一位x/10; }while(x){ans2x%10;x/10;}if(…

AOF文件重写

1.2.3.AOF文件重写 因为是记录命令&#xff0c;AOF文件会比RDB文件大的多。而且AOF会记录对同一个key的多次写操作&#xff0c;但只有最后一次写操作才有意义。通过执行bgrewriteaof命令&#xff0c;可以让AOF文件执行重写功能&#xff0c;用最少的命令达到相同效果。 如图&am…

类和对象(一)

面向过程和面向对象初步认识 C语言是面向过程的&#xff0c;关注的是过程&#xff0c;分析出求解问题的步骤&#xff0c;通过函数调用逐步解决问题。 C是基于面向对象的&#xff0c;关注的是对象&#xff0c;将一件事情拆分成不同的对象&#xff0c;靠对象之间的交互完成。 类的…