linux 系统如何正确的设置文件句柄限制

一:Too many open files 报错

有时应用程序会报Too many open files的错误,这是因为设置的文件句柄不够用,。需要修改ulimit nofile和file-max。

二:修改文件句柄的坑

#先说坑,绝对要注意否则错误的设置会导致你的服务器无法登录

如果不在 /etc/security/limits.conf 配置某个用户,或者全局 nofile 参数,那么用户open files 限制为默认值1024
如果在 /etc/security/limits.conf 中配置了全局或者某个用户的 nofile 参数,那么用户open files限制继承该参数指定值。
但是要注意的是:/etc/security/limits.conf 中配置 nofile 参数是有限制的
在2.6.25内核之前有个宏定义,定义了这个值的最大值,为1024*1024,正好是100万(也有说是102万),而在2.6.25内核及其之后,这个值是可以通过cat /proc/sys/fs/nr_open来设置。”
/proc/sys/fs/nr_open 值通过
/ect/sysct.conf 文件中 fs.nr_open 值指定,修改后 sysctl -p 生效。如果/etc/security/limits.conf中配置的 nofile参数超出限制会导致服务器无法登录

三:设置open files 限制
1.系统层面限制参数设置(file-max 设置)
即file-max是设置 系统所有进程一共可以打开的文件数量 。
1.1 查看当前系统file-max限制
cat /proc/sys/fs/file-max
65536
或者
sysctl -a | grep file-max

1.2 设置 file-max

1) 修改 /proc/sys/fs/file-max
echo 655360 > /proc/sys/fs/file-max
#修改立即生效,系统重启后会失效
或者
2) 修改 /etc/sysctl.conf 添加如下
cat /proc/sys/fs/file-max
cat /proc/sys/fs/nr_open

echo "fs.nr_open = 65535600" >> /etc/sysctl.conf
echo "fs.file-max = 55535600" >> /etc/sysctl.conf
sysctl -p
#最好fs.nr_open 跟着一起修改, sysctl -p 后修改生效,重启后不会失效

1.3 修改 nofile 限制
修改 /etc/security/limits.conf
vim /etc/security/limits.conf

* soft nofile 655360
* hard nofile 655360
teledb soft nofile 655360
teledb hard nofile 655360
#上面两行对所有用户生效,下面两行对 teledb 用户生效。如果没有配置用户和全局级别的 nofile,那么shell默认的nofile限制为 1024
#注意soft 限制的数值不要大于 hard 值,超过了实际还是以hard指定值为准

四:ulimit -n 和 file-max 区别

1. file-max
file-max的含义。man proc,可得到file-max的描述:
/proc/sys/fs/file-max
This file defines a system-wide limit on the number of open files for all processes. (See
also setrlimit(2), which can be used by a process to set the per-process limit,
RLIMIT_NOFILE, on the number of files it may open.) If you get lots of error messages
about running out of file handles, try increasing this value:
即file-max是设置 系统所有进程一共可以打开的文件数量 。同时一些程序可以通过setrlimit调用,设置每个进程的限制。如果得到大量使用完文件句柄的错误信息,是应该增加这个值。也就是说,这项参数是系统级别的。

2.ulimit
Provides control over the resources available to the shell and to processes started by it, on systems that allow such control.
即设置当前shell以及由它启动的进程的资源限制。显然,对服务器来说,file-max, ulimit都需要设置,否则就可能出现文件描述符用尽的问题

五:/etc/security/limits.conf 文件中配置生效优先级

1.目前测试发现配置文件中用户级别设置优先级高于全局级别
2.但是如果我们对同样的域指定了多次限制,比如我们对vmuser 用户指定了两次 nofile 设置,那么以最后一次出现的有效限制为准

六:修改文件句柄限制对已有进程是否生效

如果某项服务已经启动,再动态调整ulimit对其是无效的,我们可以通过。cat /proc/程序pid/limits 来查看某个已运行程序limit情况
 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

BGP(一)边界网关协议

BGP协议基础 路由分类 直连路由 非直连路由(间接路由) 静态路由动态路由 IGP:内网网关路由协议(在企业内部或数据中心内部使用) DV:距离矢量路由协议RIP(v1/v2)IGRP——网络直径&…

文本转语音软件-TTSMaker

一、TTSMaker介绍 TTSMaker(马克配音)是一款免费的文本转语音工具,提供语音合成服务,支持多种语言,包括中文、英语、日语、韩语、法语、德语、西班牙语、阿拉伯语等50多种语言,以及超过300种语音风格。 可…

Leetcode刷题笔记2:数组基础2

导语 leetcode刷题笔记记录,本篇博客记录数组基础1部分的题目,主要题目包括: 977.有序数组的平方 ,209.长度最小的子数组 ,59.螺旋矩阵II 知识点 滑动窗口 所谓滑动窗口,就是不断的调节子序列的起始位…

(二)vForm 动态表单设计器之下拉、选择

系列文章目录 (一)vForm 动态表单设计器之使用 目录 系列文章目录 前言 一、后端需提供接口 二、组件配置 总结 前言 动态表单下拉、选择等组件,大概率要使用数据库中的数据,那么vForm如何拿到数据库中的数据呢?跟随…

Xed编辑器开发第二期:使用Rust从0到1写一个文本编辑器

第三篇 这部分接着处理用户退出命令以及一些其他新功能; 3.1 使用CtrlQ退出 modifiers: event::KeyModifiers::CONTROL,使用CONTROL替换之前的NONE值即可; 3.2 重构键盘输入 让我们重构我们的代码,以便我们有一个用于低级按键读取的函数&…

php部分特性漏洞学习

php部分函数漏洞学习 简单总结一些我遇到的ctf中的php的一些函数或特性的漏洞,我刷题还是太少了,所以很多例子来自ctfshow,以后遇到相关赛题再更新 1.MD5和其他hash 弱类型比较 php中,有两中判断相等的符号,和&…

flutter使用dbus插件时,在终端无法使用“dart-dbus”命令

不用flutter的人,可能都不会找到这儿,遇到这个问题,所以这里默认flutter已经装过了,且对flutter如何使用插件也有所了解了。 由于我在项目中用到了dbus插件,用法如图所示,我需要使用这条命令来生成一个sou…

前端javascript包管理,npm升级用pnpm

一 pnpm 介绍 pnpm(Package Manager)是一个快速、节省磁盘空间的 JavaScript 包管理器,它是 Node.js 生态系统中 npm 的一个替代品。pnpm 解决了传统包管理工具在处理依赖时的一些痛点,特别是关于存储空间使用和依赖地狱的问题。…

vite vue-cli 之vue3安装Vue devtools调试工具

一.vite的官方配置-vite-plugin-vue-devtools vite.config.js import { fileURLToPath, URL } from node:urlimport vue from vitejs/plugin-vue import vueJsx from vitejs/plugin-vue-jsx import { defineConfig } from vite import VueDevTools from vite-plugin-vue-devt…

Android JetPack ViewModel

一、什么是ViewModel? Android ViewModel在我们使用MVVM开发模式时会经常用到,对我来说就是好用,好维护。 它相对于MVC模式, 一来可以减少Activity层的代码,可以把一些业务逻辑和对数据的交互到ViewModel层去&#…

Excel模板计算得出表格看板

背景 表格看板及导出,单元格时间年是根据筛选器时间变化的 较往年和往年是计算单元格 思路 1.通过excel模板来把数据填入excel再数据清洗得到数据返回前端 2.数据填充,通过行列作为key 列如:key整体20241月,根据key匹配数据填…

计算机操作系统总结(1)

1操作系统的概念(定义)功能和目标 (1)什么是操作系统? (2)操作系统的功能和目标—作为系统资源的管理者 (3)操作系统的功能和目标—向上层提供方便易用的服务 (4)操作系…

中银基金软件开发工程师春招群面记录

本文介绍2024届春招中,中国银行下属中银基金管理有限公司的软件开发工程师岗位1场面试的基本情况、提问问题等。 2024年04月投递了中国银行的共计4个部门或单位,包括中银基金管理有限公司的软件开发工程师岗位,暂时不清楚所在部门。目前完成了…

平均分配问题

将dwd_phone_shop这六行数据按照1 3 5,2 4 6的排序分为两组,与dwd_phone_base连接,分别与为其中1 3 5 为shop_Id为1的那一组 2 4 6 为shop_Id为2 的那一组 取余法 开窗函数法

南加州大学字节提出MagicPose,提供逼真的人类视频生成,实现生动的运动和面部表情传输,以及不需要任何微调的一致的野外零镜头生成。

MagicPose可以精确地生成外观一致的结果,而原始的文本到图像模型(如Stable Diffusion和ControlNet)很难准确地保持主体身份信息。 此外,MagicPose模块可以被视为原始文本到图像模型的扩展/插件,而无需修改其预训练的权重。 相关链接 论文链…

javaSwing飞机订票系统

摘要 Java swing实现的飞机票预定系统,系统数据库原本采用的是Oracle,我又改了一个mysql版本的,所以这套系统有两个版本,一个是mysql数据库版的,一个是Oracle数据库版 一. 已经完成的功能 : …

Linux基础命令[27]-gpasswd

文章目录 1. gpasswd 命令说明2. gpasswd 命令语法3. gpasswd 命令示例3.1 不加参数3.2 -a(将用户加入组)3.3 -d(从组中删除用户)3.4 -r(删除组密码)3.5 -M(多个用户一起加入组)3.6 …

excel里如何将数据分组转置?

这个表格怎样转换为下表?按照国家来分组,把不同年份对应的不同序列值进行转置?? 这演示用数据透视表就完成这个数据转换。 1.创建数据透视表 选中数据中任意单元格,点击插入选项卡,数据透视表,…

C++设计模式|结构型 适配器模式

1.什么是适配器模式? 可以将⼀个类的接⼝转换成客户希望的另⼀个接⼝,主要⽬的是 充当两个不同接⼝之间的桥梁,使得原本接⼝不兼容的类能够⼀起⼯作。 2. 适配器模式的组成 (1)接口类,给客户端调用&…

vue打包部署到springboot,通过tomcat运行

tomcat默认端口 8080springboot端口 9132vue 端口 9131 框架 项目是基于SpringBootVue前后端分离的仓库管理系统 后端:SpringBoot MybatisPlus前端:Node.js Vue element-ui数据库:mysql 一. 打包Vue项目 cmd中输入命令 npm run build 后…