文件描述符(File Descriptor)简介
一、文件描述符概念Linux 系统中,把一切都看做是文件,当进程打开现有文件或创建新文件时,内核向进程返回一个文件描述符,文件描述符就是内核为了高效管理已被打开的文件所创建的索引,用来指向被打开的文件,所有执行I/O操作的系统调用都会通过文件描述符。 二、文件描述符、文件、进程间的关系1.描述:
2.系统为维护文件描述符,建立了三个表
3.通过这三个表,认识文件描述符
前人的思考,我们的阶梯,这部分参考自网络:链接 三、文件描述符限制有资源的地方就有战争,“文件描述符”也是一种资源,系统中的每个进程都需要有“文件描述符”才能进行改变世界的宏图霸业。世界需要秩序,于是就有了“文件描述符限制”的规定。 如下表:
永久修改用户级限制时有三种设置类型:
命令讲解:
四、检查某个进程的文件描述符相关内容步骤(以nginx为例,*注意权限问题,此示例是在本地环境):
如图,找到的进程id为 1367
如图,在 Max open files 那一行,可以看到当前设置中最大文件描述符的数量为1024
如图所示,使用了17个文件描述符 总结实际应用过程中,如果出现“Too many open files”,可以通过增大进程可用的文件描述符数量来解决,但往往故事不会这样结束,很多时候,并不是因为进程可用的文件描述符过少,而是因为程序bug,打开了大量的文件连接(web连接也会占用文件描述符)而没有释放。程序申请的资源在用完后及时释放,才是解决“Too many open files”的根本之道。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |