总的空闲分配文件描述符始终为零 - Ubuntu 14.04 LTS

时间:2017-05-09 13:04:20

标签: linux ubuntu-14.04 kannel

我对免费分配的文件描述符有问题,它始终为零!

例如:

$ cat /proc/sys/fs/file-nr
  4448    0       1529806

AFAIK,意思是:

4448 is total alocated file descriptors
0 is total of free alocated file descriptors
1529806 is the total limit of the system

我也设置了以下ulimits:

$ ulimit -a
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 120242
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
**open files                      (-n) 500000**
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) 120242
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

系统文件最大值:

$ cat /proc/sys/fs/file-max
 1529806

打开最多的文件来自Kannel守护程序(bearerboxsmppbox)。一旦打开的文件数量达到限制smppbox被卡住,只有重新启动才能帮助解决这个问题。

根据我在互联网上发现的文章,我了解系统中没有免费的分配文件描述符。

我尝试的每个解决方案都没有帮助。

我做错了什么?

需要你的帮助。

提前谢谢。

1 个答案:

答案 0 :(得分:1)

根据man page for proc :(强调我的)

  

的/ proc / SYS / FS /文件-NR
  这个(只读)文件包含三个数字:分配的文件句柄数(即当前打开的文件数);免费文件句柄的数量;和最大文件句柄数(即与/ proc / sys / fs / file-max相同的值)。如果分配的文件句柄数接近最大值,则应考虑增加最大值。在Linux 2.6之前,内核分配的文件动态处理,但它没有再释放它们。相反,免费文件句柄保存在列表中以便重新分配; “free file handles”值表示该列表的大小。大量的空闲文件句柄表示打开文件句柄的使用过去有一个高峰。 自Linux 2.6起,内核会解除分配释放的文件句柄,“免费文件句柄”值始终为零。

所以在内核版本> = 2.6

上总是为零