您的位置:首页 > 运维架构 > Linux

Linux上文件描述符数量限制

2017-01-05 10:31 99 查看
转载自:http://blog.csdn.net/wsscy2004/article/details/41895263

       在linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件。如传输控制协议 (TCP) 和用户数据报协议 (UDP) 套接字等,系统在后台都为该应用程序分配了一个文件描述符,该文件描述符提供了大量关于这个应用程序本身的信息。

       在进行高并发TCP连接处理时,最高的并发数量都要受到系统对用户单一进程同时可打开的文件描述符数量的限制(这是因为系统为每个TCP连接都要创建一个socket句柄,每个socket句柄同时也是一个文件句柄)。可使用ulimit命令查看系统允许当前用户进程打开的文件数限制:
ulimit -n
       一般每个进程最多允许同时打开1024个文件,这1024个文件中还得除去每个进程必然打开的标准输入,标准输出,标准错误,服务器监听socket,进程间通讯的unix域socket等文件,那么剩下的可用于客户端socket连接的文件数就只有大概1024-10=1014个左右。也就是说缺省情况下,基于Linux的通讯程序最多允许同时1014个TCP并发连接。

       对于想支持更高数量的TCP并发连接的通讯处理程序,就必须修改Linux对当前用户的进程同时打开的文件描述符的数量限制。修改上述限制的最简单的办法就是使用ulimit命令:
ulimit –n 65535
       上述命令中设置了的单一进程允许打开的最大文件数,但只是临时的,永久生效的方法需要修改/etc/security/limits.conf,在最后添加:
* soft nofile 605536
* hard nofile 605536
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: