Linux修改文件句柄数及vm.max_map_count、stack size

2023-11-07

一、修改文件句柄数
1.1.查看当前大小
ulimit -a
在这里插入图片描述

1.2.临时修改
ulimit -n 4096
在这里插入图片描述

1.3.永久修改
vim /etc/security/limits.conf

*  soft  nofile  65536

*  hard  nofile  65536
在这里插入图片描述

重新登录后生效

二、修改max user processes进程数
2.1.临时修改
ulimit -u 65536

2.1.永久修改
vim /etc/security/limits.conf

*  soft  nproc 65536
*  hard  nproc 65536

三、调整vm.max_map_count的大小
max_map_count文件包含限制一个进程可以拥有的VMA(虚拟内存区域)的数量

报错“max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]”
3.1.查看当前值
sysctl -a|grep vm.max_map_count
在这里插入图片描述

3.2.临时修改
sysctl -w vm.max_map_count=262144
在这里插入图片描述

3.3.永久修改
vim /etc/sysctl.conf

vm.max_map_count=262144
1

sysctl -p

四、调整stack size的大小
查看:ulimit -a,默认是8192,即8M
在这里插入图片描述

临时修改
ulimit -s 1024
在这里插入图片描述

永久修改
vi /etc/security/limits.conf

  • soft stack 1024
  • hard stack 1024

注意
nofile

nofile表示单个进程可以打开的最大文件句柄数(默认值,软限制:1024,硬限制:4096)
/proc/sys/fs/file-max表示整个系统内核可以分配的最大文件句柄数(默认值约为物理内存转换成kb的值/10),如需修改执行命令:echo
‘fs.file-max=104857600’ >> /etc/sysctl.conf && sysctl -q -p
/proc/sys/fs/file-nr表示整个系统内核的文件句柄统计数据(只读),包含三个值,1:整个系统内核已分配的文件句柄数,2:整个系统内核已分配但未使用的文件句柄数(一般情况下为0),3:整个系统内核可以分配的最大文件句柄数(等于file-max)
/proc/sys/fs/nr_open表示单个进程可以分配的最大文件句柄数(默认值为1048576),如需修改执行命令:echo
‘fs.nr_open=2097152’ >> /etc/sysctl.conf && sysctl -q -p
nofile的值不能超过nr_open的值,如果配置文件中nofile的硬限制的值超过nr_open的值将会导致无法登录系统
单个进程可以打开的最大文件句柄数由nofile和file-max同时约束,假如一个进程已打开的文件句柄数小于nofile,但整个系统内核所有进程打开的文件句柄数已经达到file-max,此时这个进程也不能再打开文件句柄了

nproc

nproc表示单个用户创建的进程数(默认值,软限制:threads-max/2,硬限制:threads-max/2),线程的实现其实是一个轻量级的进程,所以线程也算进程
/proc/sys/kernel/threads-max表示整个系统内核可以分配的最大线程数,如需修改执行命令:echo
‘kernel.threads-max=1048576’ >> /etc/sysctl.conf && sysctl -q -p
/proc/sys/kernel/pid_max表示整个系统内核可以分配的最大进程ID(默认值为32768,2个字节的最大值),也就是说,整个系统内核最多只能分配pid_max个进程或线程,如需修改执行命令:echo
‘kernel.pid_max=1048576’ >> /etc/sysctl.conf && sysctl -q -p
/proc/sys/vm/max_map_count表示单个进程可以分配的内存映射区域的最大数量(默认值为65530),由于java中每创建一个线程需要分配2个内存映射区域,并且jvm本身也要占用部分内存映射区域,所以java程序理论上最多可以创建的线程数为略小于max_map_count/2(实际上还受jvm参数-Xms、-Xmx、-Xss以及操作系统物理内存的影响),如需修改执行命令:echo
‘vm.max_map_count=2097152’ >> /etc/sysctl.conf && sysctl -q -p
单个进程可以创建的线程数由nproc、threads-max、pid_max、max_map_count以及系统资源同时约束,达到其中一个的上限就不能再创建线程了
CentOS7中/etc/security/limits.d/20-nproc.conf(CentOS6是90-nproc.conf)会覆盖/etc/security/limits.conf中的nproc配置,前提条件是,(20|90)-nproc.conf和limits.conf的domain相同或者(20|90)-nproc.conf比limits.conf的domain更具体,优先级从高到低分别为:
/etc/security/limits.d/(20|90)-nproc.conf中domain为具体用户的配置
/etc/security/limits.conf中domain为具体用户的配置
/etc/security/limits.d/(20|90)-nproc.conf中domain为通配符()的配置
/etc/security/limits.conf中domain为通配符(
)的配置

注意事项

domain中具体用户比通配符(*)优先级高
软限制不能大于硬限制,如果配置文件中软限制设置的比硬限制高,则软限制会使用硬限制的值,通过ulimit命令设置软限制不能超过硬限制。root用户可以通过ulimit命令降低和提高硬限制(nofile的值不能超过nr_open的值)。非root用户可以通过ulimit命令降低硬限制,但不可以通过ulimit命令提高硬限制。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Linux修改文件句柄数及vm.max_map_count、stack size 的相关文章

  • 如何从 C 文件更改终端中的目录

    如何从 C 程序更改将在终端上生效的目录 实际上不要告诉 system 函数或 chdir 函数 这些仅适用于 C 中的进程或子 shell 假设我正在从 bash shell 执行一个 C 程序 其进程 ID 为 10223 那么 我可以
  • 如何从脚本向 sudo 提供密码?

    请注意 这是在我的本地计算机上运行的来宾虚拟机 VBox 我不担心安全性 我正在编写一个将在 Linux Ubuntu VM 上执行的脚本myuser用户 该脚本将在下面创建一个非常大的目录树 etc myapp 目前我必须手动完成所有这些
  • 是否有我可以运行的操作系统命令来确定是否在基于 Xen 的虚拟机内运行

    我可以在基于 Xen 的虚拟机中运行一个操作系统命令来告诉我它是一个虚拟机而不是物理机 我听说内核对此有一些自我意识智能 例如就像 ps 输出中的额外列之类的 我知道 vmstat 提供了 st 列 但我在运行 Linux 内核 2 6 1
  • Nasm 打印到下一行

    我用 nasm Assembly 编写了以下程序 section text global start start Input variables mov edx inLen mov ecx inMsg mov ebx 1 mov eax 4
  • 在单个命令中使用前缀重命名文件夹中的所有文件

    重命名带有前缀的文件夹中的所有文件 Unix 假设一个文件夹有两个文件 a txt b pdf 那么它们都应该从一个命令重命名为 Unix a txt Unix b pdf 如果您的文件名包含没有空格并且你没有任何子目录 你可以使用一个简单
  • Bash 中 $() 和 () 之间的区别

    当我打字时ls l echo file 支架的输出 这只是简单的回显 被获取并传递到外部ls l命令 就等于简单的ls l file 当我打字时ls l echo file 我们有错误 因为不能嵌套 内部外部命令 有人可以帮助我理解之间的区
  • 使用 C++ 输出字符串覆盖 Linux 终端上的最后一个字符串

    假设我有一个命令行程序 有没有办法让我说的时候 std cout lt lt stuff 如果我不做std cout lt lt n 在另一个之间std cout lt lt stuff 东西的另一个输出将覆盖同一行上的最后一个东西 清理行
  • 我在哪里可以学习如何使 C++ 程序与操作系统 (Linux) 交互

    我是一个 C 初学者 我想创建与操作系统交互的小程序 使用 Kubuntu Linux 到目前为止 我还没有找到任何教程或手册来让 C 与操作系统交互 在 PHP 中 我可以使用命令 exec 或反引号运算符来启动通常在控制台中执行的命令
  • 对 sf:: 的未定义引用

    我想用 C 制作 GUI 应用程序 发现 SFML 是一个不错的选择 幸运的是 我使用的是 Linux 所以 SFML 2 4 已经安装在我的系统上 所以我开始搜索一些教程并找到了一个制作简单窗口的教程 但是当我运行代码时 出现错误 提示未
  • 如何使用libaudit?

    我试图了解如何使用 libaudit 我想接收有关使用 C C 的用户操作的事件 我不明白如何设置规则 以及如何获取有关用户操作的信息 例如 我想获取用户创建目录时的信息 int audit fd audit open struct aud
  • 测试linux下磁盘空间不足

    我有一个程序 当写入某个文件的磁盘空间不足时 该程序可能会死掉 我不确定是否是这种情况 我想运行它并查看 但我的测试服务器不会很快耗尽空间 有什么办法可以嘲笑这种行为吗 看起来没有任何方法可以在 Ubuntu 中设置文件夹 文件大小限制 并
  • Linux TCP服务器:在接受连接之前读取客户端的IP地址

    Related C Winsock API如何在接受连接之前获取连接客户端IP https stackoverflow com questions 716209 c winsock api how to get connecting cli
  • 在 Ubuntu 上纯粹通过 bash 脚本安装 mysql 5.7

    我想要一个无需任何手动输入即可安装 MySQL 5 7 实例的 bash 脚本 我正在关注数字海洋教程 https www digitalocean com community tutorials how to install mysql
  • gdb 错误 - 文件不是可执行格式:无法识别文件格式

    我正在尝试使用 gdb 调试某个名为 xdf 的程序 但是当我运行 gdb xdf 时 出现以下错误 home nealtitusthomas X ray astronomy heasoft 6 24 x86 64 pc linux gnu
  • 如何在 Linux x86_64 上模拟 iret

    我正在编写一个基于 Intel VT 的调试器 由于当 NMI Exiting 1 时 iret 指令在 vmx guest 中的性能发生了变化 所以我应该自己处理vmx主机中的NMI 否则 guest会出现nmi可重入错误 我查了英特尔手
  • sqlite 插入需要很长时间

    我正在将不到 200 000 行插入到 sqlite 数据库表中 我只是在终端中通过 sqlite3 使用一个非常简单的 sql 文件 我打赌它已经运行了至少 30 分钟 这是正常现象还是我应该关闭该过程并尝试不同的方法 sqlite中的插
  • linux下如何获取昨天和前天?

    我想在变量中获取 sysdate 1 和 sysdate 2 并回显它 我正在使用下面的查询 它将今天的日期作为输出 bin bash tm date Y d m echo tm 如何获取昨天和前天的日期 这是另一种方法 对于昨天来说 da
  • 如何从 Linux 的 shell 中删除所有以 ._ 开头的文件?

    确实如标题所示 我已将许多文件从 Mac 复制到 Raspberry Pi 这导致了许多以前缀开头的多余文件 我想删除以以下开头的文件夹中的每个文件 我该怎么做 尝试类似的方法 cd path to directory rm rf 或者 如
  • 是否从页面缓存中的脏页面进行文件读取?

    当字节写入文件时 内核不会立即将这些字节写入磁盘 而是将这些字节存储在页缓存中的脏页中 回写缓存 问题是 如果在脏页刷新到磁盘之前发出文件读取 则将从缓存中的脏页提供字节 还是首先将脏页刷新到磁盘 然后进行磁盘读取以提供字节 将它们存储在进
  • 如何通过代理将套接字连接到http服务器?

    最近 我使用 C 语言编写了一个程序 用于连接到本地运行的 HTTP 服务器 从而向该服务器发出请求 这对我来说效果很好 之后 我尝试使用相同的代码连接到网络上的另一台服务器 例如 www google com 但我无法连接并从网络中的代理

随机推荐

  • 类 模板 已经声明为非类 模板

    类 模板 已经声明为非类 模板 解决方案 原因是在当前包下 已经定义了AA类 解决方案 更改模板类AA的类名
  • Linux系统环境搭建

    一 VM虚拟机创建步骤 1 打开VM点击新创建虚拟机 一直点击下一步到下图显示这里 然后点击自定义硬件 选择IOS映像文件 选择映像文件后点击关闭 然后启动虚拟机 点击连接网络开关 显示已连接后 点击开始安装虚拟机 设置密码 安装完成后点击
  • Ubuntu 生成core文件

    man core 命令 可查阅关于core dump file的详细信息 下文是我的一些总结 core dump file 是进程终止时的内存映像 是个磁盘文件 可用来调试 但是有时程序显示 段错误 核心已转储 时 并没有生成core文件
  • STM32实现红外感应传感器功能

    原理 人体都有恒定的体温 一般在 37 度 所以会发出特定波长 10um 左右的红外线 人体发射的 10um 左右的红外线通过菲涅尔滤光片增强后聚集到红外感应源上 这种元件在接收到人体红外辐射温度发生变化时就会失去电荷平衡 向外释放电荷 后
  • 西门子tcpip通讯实例_西门子1200PLC,组态王与Access数据库通讯--⑤设置PLC设备

    西门子1200PLC 组态王与Access数据库通讯 设置PLC设备 设置PLC设备 1 0 打开组态王软件 打开工程 会看到如下界面 点击COM2 2 0 可以看到新建 点击新建设备 现在我们要连的是西门子系列的1200 所有选择西门子
  • vscode C++配置

    一般配置 在创建了工作区域以后 会有一个 vscode文件夹 里边有launch json tasks json两个文件 launch json 使用 IntelliSense 了解相关属性 悬停以查看现有属性的描述 欲了解更多信息 请访问
  • 向eclipse的JavaWeb项目中导入jar包--备忘录

    一 在你所需的jar包网站下载对应的jar包 如org apache commons lang jar 二 复制粘贴到该JavaWeb的WEB INF目录下的lib目录下 如 三 右键该jar包选择Build Path gt Configu
  • 【华为机试真题 JAVA】字符串删除后的最大数值-100

    题目描述 给定一个由纯数字组成以宇符串表示的数值 现要求字符串中的每个数字最多只能出现2次 超过的需要进行删除 删除某个重复的数字后 其它数字相对位置保持不变 如34533 数字3重复超过2次 需要册除其中一个3 删除第一个3后获得最大数值
  • cuda C++ cmake makefile

    https blog csdn net u011679999 article details 80041081 spm 1001 2014 3001 5502 https blog csdn net comedate article det
  • 控制微信公众号物理键返回url

    总有一些奇葩的需求 在公众号中 如果你写的模块是一个公众号的子模块 那么当你在模块的第一级时 再点返回 应该是返回到公众号的主页 也就是模块区域 而不是返回你上一个地址 直接上代码 1 先监听到物理返回键 在mounted钩子定义 再去de
  • C++ 左值、右值、右值引用

    C 左值 右值 右值引用 发表于2016 2 3 15 49 35 98人阅读 分类 C 在C语言中 我们常常会提起左值 lvalue 右值 rvalue 这样的称呼 而在编译程序时 编译器有时也会在报出的错误信息中会包含左值 右值的说法
  • C++ 中有符号数转化为无符号数

    1 背景知识 我的计算中 char 类型占 8 个比特位 unsigned char 类型能表示的数的范围为 0 2 8 1 即 0 255 共 256 个数 int 类型占 32 个比特位 那么 unsigned 类型所能表示的数的范围为
  • STM32:配置定时器为PWM输出模式以及编码器接口模式

    一 STM32的高级定时器TIM8配置为PWM输出模式 最近在工程项目中 需要用stm32的定时器 以高级定时器TIM8为例 产生两路PWM输出 作为电机的pwm输入 方法如下 初始化电机控制所需IO口 void Motor Init vo
  • Linux——(管道练习)C实现父子进程通信、兄弟进程通信、多个读写端操作管道及管道缓冲区大小、fifo实现非血缘间进程通信

    一 父子进程通信 lswc l 父进程ls写到管道 子进程wc管道的内容 父进程创建管道 拥有读写两端 父进程fork子进程 父进程要将原本输出到屏幕上的内容输出到管道中 用dup实现 然后execlp去进行ls操作 子进程同理 将原本从标
  • 毕业设计-基于轨道的扣件状态检测- YOLO

    目录 前言 课题背景和意义 实现技术思路 一 YOLO 网络结构 二 模型建立 三 实验结果 实现效果图样例 最后 前言 大四是整个大学期间最忙碌的时光 一边要忙着备考或实习为毕业后面临的就业升学做准备 一边要为毕业设计耗费大量精力 近几年
  • BUG收割机之解决eureka的Application显示为UNKNOWN

    BUG收割机之解决eureka的Application显示为UNKNOWN 初学spring cloud的小伙伴们 肯定会遇到eureka服务的application显示为UNKNOWN的情况 如果不幸和下图中的BUG类似 那么就请继续阅读
  • Metasploit超详细安装及使用教程(图文版)

    通过本篇文章 我们将会学习以下内容 1 在Windows上安装Metasploit 2 在Linux和MacOS上安装Metasploit 3 在Kali Linux中使用 Metasploit 4 升级Kali Linux 5 使用虚拟化
  • Python Pandas –数据输入和输出

    Pandas as a library can read and write data to a wide variety of sources In this article we would concentrate on the fol
  • 【衍射光栅】用于Matlab的交互式衍射光栅模型研究

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 2 1 干涉和衍射的交互式仿真 2 2 衍射光栅光谱 2 3 一阶衍射的扩展视图 2 4 用
  • Linux修改文件句柄数及vm.max_map_count、stack size

    一 修改文件句柄数 1 1 查看当前大小 ulimit a 1 2 临时修改 ulimit n 4096 1 3 永久修改 vim etc security limits conf soft nofile 65536 hard nofile