CentOS最大文件描述符限制更改
系统级的限制:/proc/sys/fs/file-max中设定了系统最大能打开的文件数。
查看该值可以用如下方式:
[root@#panda ~]# cat /proc/sys/fs/file-max
655351
[root@#panda ~]# sysctl fs.file-max
fs.file-max = 655351
[root@#panda ~]#
修改该值可以用如下方式:
[root@#panda ~]# echo 655300 > /proc/sys/fs/file-max
[root@#panda ~]# sysctl fs.file-max
fs.file-max = 655300
[root@#panda ~]# sysctl -w fs.file-max=655350
fs.file-max = 655350
[root@#panda ~]# sysctl fs.file-max
fs.file-max = 655350
[root@#panda ~]#
上面方式修改的值会立即生效但是机器重启后又会失效。永久生效的修改可以用下面的方式:
[root@#panda etc]# echo fs.file-max=524288 >> /etc/sysctl.conf
[root@#panda etc]# sysctl fs.file-max
fs.file-max = 655350
[root@#panda etc]# sysctl -p
fs.file-max = 524288
[root@#panda etc]# sysctl fs.file-max
fs.file-max = 524288
[root@#panda etc]#
执行了sysctl -p 命令之后 sysctl.conf中的修改才能立即生效。
还有一个问题是file-max最大能设置多大呢?当然你可以把它往大了设,但是同时打开的文件描述符越多,内存开销就越大。那怎样设置一个合理的上限呢?一个经验算法是 256个fd 需4M内存。例如8G内存,8*1024/4*256=524288。
用户级的限制:/etc/security/limits.conf 可以添加用户使用资源的限制
设置格式为:
username|@groupname type resource limit
username|@groupname:设置需要被限制的用户名,组名前面加@和用户名区别。也可以用通配符*来做所有用户的限制。
type:有 soft,hard 和 -,soft 指的是当前系统生效的设置值。hard 表明系统中所能设定的最大值。soft 的限制不能比hard 限制高。用 - 就表明同时设置了 soft 和 hard 的值
resource: 为资源类型有多种。 nofile为最大打开文件数。
例如:* - nofile 655350 将所有用户的最大打开文件数的soft和hard都设为655350
对/etc/security/limit.conf的修改会在新的会话期中生效
会话级的限制:ulimit 命令查看和设置当前会话期的资源限制
ulimit -Sn 查看会话期最大文件描述符soft限制
ulimit -Hn 查看会话期最大文件描述符hard限制,hard限制是soft的上限。
ulimit -Sn 2046 限制当前会话期内能打开的文件数为2046(如果其中一个进程打开了2046个,其他进程再打文件都将失败)。
ulimit -Sn 查看到的默认1024,用ulimit所做的修改在会话期结束后都将失效。那如何让对会话级的资源限制设置永久生效呢?可以把ulimit 命令放到会话建立时初始化的过程中执行,这样每次会话期就都自动执行命令修改设置了。例如在用户目录下的.bashrc 中加入一行 ulimit -Sn 2046,要对所有用户都生效则可在/etc/profile中加入一行命令 ulimit -Sn 2046。容易被忽略的一点是,如果我们设置了用户级的限制,新建的会话期的资源限制的初值(ulimit -Sn 查看到的)是从用户级的限制值(/etc/security/limit.conf中设置的值)继承过来的。
进程级的管理:进程可以调用getrlimit和setrlimit来设置和修改对应资源的限制。
例如:
rlimit tmp={4095,4096};
setrlimit(RLIMIT_NOFILE,&tmp); //设置进程打开文件数的软硬限制分别为4095,4096
总结:单个进程最大能使用的文件描述符是由系统限制,用户限制,会话期限制,进程限制值中最小的那个决定的。如果我们在一台机器上部署了自己的网络服务,我们只需按下面步骤修改就可以了:
1. 计算 fdmax = 物理内存大小(m为单位) / 4 * 256 假设内存为8G,fdmax=524288
2. 执行命令: echo fs.file-max=524288 >> /etc/sysctl.conf
3. 执行命令: sysctl -p
4. 执行命令: echo * soft nofile 524286 >> /etc/security/limits.conf
5. 执行命令: echo * hard nofile 524287 >> /etc/security/limits.conf
5. 结束当前会话期
6. 启动新的会话
7.启动我们的服务
CentOS最大文件描述符限制更改的更多相关文章
- (转)CentOS最大文件描述符限制更改
CentOS最大文件描述符限制更改 原文:https://www.cnblogs.com/TonyXiaoClub/p/4747736.html 系统级的限制:/proc/sys/fs/file-ma ...
- Linxu系统修改文件描述符
修改系统文件描述符 文件描述符:无符号整数(0-65535),进程使用它来标示打开的文件 /etc/security/limits.conf:可以修改CPU,堆栈, 1.查看最大的标示符 u ...
- Nginx-PHP优化设置 + lnmp调优的关键影响因素 + php-fpm + nginx返回码 + tcp调优 + 最大文件描述符
https://www.cnblogs.com/zengkefu/p/5602473.html最大文件描述符 https://blog.csdn.net/fanren224/article/detai ...
- linux文件描述符数量的坑
ulimit -n 查看 单进程或线程,可打开的最大文件描述符数 通过ulimit -n 10240 设置文件描述符数: (当前shell生效,这真是个坑啊) 永久生效:(需要重启系统,也是个坑,好 ...
- Linux文件描述符与打开文件之间的区别(转载)
转载请说明出处:http://blog.csdn.net/cywosp/article/details/38965239 1. 概述 在Linux系统中一切皆可以看成是文件,文件又可分为: ...
- linux文件描述符--转载
转自:http://blog.csdn.net/cywosp/article/details/38965239 1. 概述 在Linux系统中一切皆可以看成是文件,文件又可分为:普通文件.目录 ...
- Linux中的文件描述符与打开文件之间的关系
Linux中的文件描述符与打开文件之间的关系 导读 内核(kernel)利用文件描述符(file descriptor)来访问文件.文件描述符是非负整数.打开现存文件或新建文件时,内核会返回一个文件描 ...
- Linux中的文件描述符与打开文件之间的关系------------每天进步一点点系列
http://blog.csdn.net/cywosp/article/details/38965239 1. 概述 在Linux系统中一切皆可以看成是文件,文件又可分为:普通文件.目录文件. ...
- (转)Linux中的文件描述符
本文转自:http://blog.csdn.net/cywosp/article/details/38965239 作者:cywosp 1. 概述 在Linux系统中一切皆可以看成是文件,文件又可分为 ...
随机推荐
- 【转】PHP调试开发工具你认识多少?
来源:PHP100中文网(http://www.php100.com/html/itnews/PHPxinwen/2009/0902/3257.html) PHP现在已经是使用最为广泛的开源服务器端脚 ...
- Servlet生命周期及工作原理
1 Servlet生命周期Servlet 生命周期:Servlet 加载--->实例化--->服务--->销毁. init():在Servlet的生命周期中,仅执行一次init()方 ...
- [deviceone开发]-do_Dialog的基本使用示例
一.简介 我们平常使用do_Notification的alert或者confirm都是比较简单弹窗. 更为复杂和个性化的弹窗需要用到do_Dialog, 它可以弹出一个自定义的窗口,窗口里的内容是你自 ...
- [实现]Javascript代码的另一种压缩与加密方法——代码图片转换
代码=图片 图片=代码 JS代码对于喜欢F12的同志来说,连个遮羞布都没有... 虽然把代码变成图片也仅仅只是增加一层纱布而已...但这方法还是挺好玩的,而且代码也被压缩了一点. 第一次看到[图片=代 ...
- SDWebImage 加载网络图片失败,重新运行,就能加载成功。
现象: 使用SDWebImage 加载网络图片,偶尔会有一两张图片就是显示不出来.重新运行有时又可以了. 这个问题的原因是: 当SDWebImage 在加载图片的时候 我用的是- (void)sd_s ...
- 闲聊桌面应用开发[Win16->Win32->ATL/WTL/MFC->WinForm->WPF/Silverlight/WinRT]
闲来无聊,正好小组人员讨论到桌面的开发,那把笔者接触的WIndows平台下的几个主要的发展过程聊一聊. 主要从概述,参考资料,图书等几个方面说起. 所有的界面开发都会涉及如下的几个方面的内容: v 控 ...
- [Android]AndroidInject增加sqlite3数据库映射注解(ORM)
以下内容为原创,欢迎转载,转载请注明 来自天天博客:http://www.cnblogs.com/tiantianbyconan/p/3623050.html AndroidInject项目是我写的一 ...
- 表达式语言EL
表达式语言EL 表达式语言 EL(Expression Language,表达式语言)主要是用在JSP页面中,用来辅助我们产生无脚本的JSP页面,此处的脚本指的是JSP中的Java代码. EL的语法是 ...
- 【数据库】MySQL的安装与简单使用
首先我们要下载Mysql的安装包,大家可以到http://mysql.com官网中根据自己的电脑系统版本下载 也可以点击 MySQL资源 下载 密码:btuu 建议下载5.7以上的版本,因为省掉了许多 ...
- UI入门指引
1. iOS学习路线: C语言:数据类型.流程控制.函数.指针.字符串.结构体.枚举.预处理: OC:面向对象.内存管理.分类.协议.Block.KVC/KVO.Foundation框架: iOS基础 ...