
1、概述:
文件描述符是内核为了高效管理已被打开的文件所创建的索引。是一个非负整数,用于代指被打开的文件。所有通过I/O操作的系统调用都通过文件描述符。
文件描述符用以表明每一个被进程所打开的文件和socket
2、文件描述符的限制:
Linux下最大文件描述符的限制有两个:
(1) 系统级限制:sysctl命令和proc文件系统中查看到的数值是一样的,这属于系统限制,它是限制所有用户打开文件描述符的总和
(2) 用户级限制:ulimit命令看到的是用户级的最大文件描述符限制,也就是说每一个用户登录后执行的程序占用的文件描述符总数不得超过这个限制。
3、修改文件描述符:
(1)修改用户级文件描述符
临时修改:ulimit -SHn 10240 重启失效
[root@super ~]# ulimit -SHn 10240
[root@super ~]# ulimit -n 10240 永久修改:修改 /etc/security/limits.conf 在末尾添加如下:
test soft nofile 10240 test hard nofile 20480
修改完生效
上面设置的意思是:test用户文件描述符达到10240个的时候,触发告警。 test用户文件描述符达到20480个的时候,达到最高上限。
(2)修改系统级文件描述符
临时修改:sysctl fs.file-max=40000 或 echo 40000 > /proc/sys/fs/file-max
[root@super ~]# sysctl fs.file-max=40000
[root@super ~]# sysctl -a | grep fs.file-max fs.file-max = 40000
永久生效:echo "fs.file-max=40000" >> /etc/sysctl.conf 使用 sysctl -p 修改生效,不用重启
[root@super ~]# echo "fs.file-max=50000" >> /etc/sysctl.conf
[root@super ~]# sysctl -p
[root@super ~]# sysctl -a | grep fs.file-max --color fs.file-max = 50000
当服务器运行,Apache、squid、Mysql、Oracle时,都需要对其进行优化调整。

版权声明:本文内容来自博客园:hukey,遵循CC 4.0 BY-SA版权协议上原文接及本声明。
本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行可。
原文链接:https://www.cnblogs.com/hukey/p/5227509.html
如有涉及到侵权,请联系,将立即予以删除处理。
在此特别鸣谢原作者的创作。
此篇文章的所有版权归原作者所有,与本公众号无关,商业转载建议请联系原作者,非商业转载请注明出处。