博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
linux /proc/sys/fs/file-nr /proc/sys/fs/file-max /etc/security/limits.conf 三者的关联
阅读量:4325 次
发布时间:2019-06-06

本文共 1555 字,大约阅读时间需要 5 分钟。

ulimit -n 对应 /etc/security/limits.conf 文件设置

问题: Can’t open so many files 对于linux运维的同学们,相信都遇到过这个问题。
在Linux下一切资源皆文件,普通文件是文件,磁盘打印机是文件,socket 当然也是文件。系统默认设置成1024,但是这个数字对于服务器特别是大并发的远远是不够的,所以,我们需要结合实际情况修改成一个更大更合理的值。
修改方法

临时解决方案: ulimit -SHn 65535

永久解决方案,注意,切勿设置过大,造成服务器无法启动,小于 /proc/sys/fs/file-max

vim /etc/security/limits.conf

# 确认包含下面的内容:

* soft nofile 65536
* hard nofile 65536
保存,然后重启
注:65536 是我这边的设定值,读者也可以自行设置一个合适的值,* 代表针对所有用户

另外还有一个,/proc/sys/fs/file-nr,可以看到整个系统目前使用的文件句柄数量

ulimit -u

比如我们在模拟大规模http并发测试的时候,客户端会报一个无法fork new proc异常,原因是受到了最大进程1024的限制
解除 Linux 系统的最大进程数
方法如下
vim /etc/security/limits.d/90-nproc.conf

# 添加如下的行

* soft nproc 102400
root soft nproc 102400

ulimit中硬限制是实际的限制,而软限制,是warnning限制,只会做出warning,其实ulimit命令本身就有分软硬设置,加-H就是硬,加-S就是软。

默认显示的是软限制,如果修改的时候没有加上的话,就是两个一起改
配置文件最前面的一位是domain,设置为星号代表全局,另外你也可以针对不同的用户做出不同的限制
但是ulimit其实就是对单一程序的限制,进程级别的
那系统总限制呢
其实是在这里,/proc/sys/fs/file-max
通过 man 5 proc 找到file-max的解释: file-max指定了系统范围内所有进程可以打开的文件句柄的数量限制。kernel-level。
可以通过cat查看目前的值,echo来立刻修改
echo 10000 > /proc/sys/fs/file-max
另外还有一个,/proc/sys/fs/file-nr
只读,可以看到整个系统目前使用的文件句柄数量
ps :
[root@qike ~]# cat /proc/sys/fs/file-nr
1024 0 101269
其中分别表示
已分配文件句柄的数目 / 分配了但没有使用的句柄数目 / 文件句柄的最大数目
具体解释参考http://www.dewen.io/q/14740

http://stackoverflow.com/questions/3991223/how-does-linux-file-descriptor-limits-work

[root@qike ~]# cat /proc/sys/fs/file-max

101269
可以看到file-nr的最后一项 和file-max是一致的

参考链接 https://gitsea.com/2013/05/23/linux-ulimit%E8%AF%A6%E8%A7%A3/

http://blog.sina.com.cn/s/blog_605f5b4f01013lad.html

转载于:https://www.cnblogs.com/dantes91/p/5007778.html

你可能感兴趣的文章
阶段3 2.Spring_08.面向切面编程 AOP_1 AOP的概念
查看>>
阶段3 2.Spring_08.面向切面编程 AOP_4 spring基于XML的AOP-配置步骤
查看>>
阶段3 2.Spring_07.银行转账案例_10 使用动态代理实现事务控制
查看>>
阶段3 2.Spring_08.面向切面编程 AOP_8 spring中的环绕通知
查看>>
阶段3 2.Spring_08.面向切面编程 AOP_10 总结和作业安排
查看>>
阶段3 2.Spring_09.JdbcTemplate的基本使用_2 JdbcTemplate的概述和入门
查看>>
阶段3 2.Spring_08.面向切面编程 AOP_7 通用化切入点表达式
查看>>
阶段3 2.Spring_09.JdbcTemplate的基本使用_6 JdbcDaoSupport的使用以及Dao的两种编写方式...
查看>>
阶段3 2.Spring_08.面向切面编程 AOP_9 spring基于注解的AOP配置
查看>>
阶段3 2.Spring_10.Spring中事务控制_1 基于XML的AOP实现事务控制
查看>>
阶段3 2.Spring_09.JdbcTemplate的基本使用_1 今日课程内容介绍
查看>>
阶段3 2.Spring_09.JdbcTemplate的基本使用_3 JdbcTemplate在Dao中的使用
查看>>
阶段3 2.Spring_09.JdbcTemplate的基本使用_5 JdbcTemplate在spring的ioc中使用
查看>>
阶段3 2.Spring_10.Spring中事务控制_2 作业-基于注解的AOP实现事务控制及问题分析_上...
查看>>
阶段3 2.Spring_10.Spring中事务控制_5 spring事务控制的代码准备
查看>>
阶段3 2.Spring_10.Spring中事务控制_4 spring中事务控制的一组API
查看>>
阶段3 2.Spring_10.Spring中事务控制_7 spring基于注解的声明式事务控制
查看>>
阶段3 2.Spring_10.Spring中事务控制_6 spring基于XML的声明式事务控制-配置步骤
查看>>
阶段3 2.Spring_10.Spring中事务控制_9 spring编程式事务控制1-了解
查看>>
阶段3 2.Spring_10.Spring中事务控制_8 spring基于纯注解的声明式事务控制
查看>>