linux下文件描述符限制

39次阅读

共计 397 个字符,预计需要花费 1 分钟才能阅读完成。

一. 问题描述

在调试一个问题的时候,socket 始终连接不上,返回的句柄大约是 1030 左右。开始的时候是好的,运行一段时间后出现的问题。

二. 问题分析

问题过去有段时间了,忘记当时怎么想到是超过文件描述符限制了。大概是根据句柄的值或者返回的错误码了。
嗯。linux 下文件描述符最大限制默认最大为 1024,通过

[root@localhost ~]# ulimit -n
1024

这个命令可以查看。此值可以修改。
进程的文件描述符,可以通过

 [root@localhost ~]# ls -al /proc/13623/fd |wc -l
59

输出的数字即为该进程文件描述符的个数。
修改 linux 下文件描述符限制的方法:
临时修改使用:ulimit -HSn 65536

其实 1024 这个限制一般足够了,至于超过此数值一般也是程序中的 bug。在调试的程序中没 new 一个 socket 的时候,都新打开了一个文件,而忘记关闭,从而导致越来越多。

正文完
 0