如何在 FreeBSD 10.1 上增加每个进程的打开文件数限制?
Posted
技术标签:
【中文标题】如何在 FreeBSD 10.1 上增加每个进程的打开文件数限制?【英文标题】:How to increase openfiles per process limit on FreeBSD 10.1? 【发布时间】:2016-01-19 05:17:05 【问题描述】:我有关于 FreeBSD 10.1-RELEASE 上每个进程的 openfiles 限制的问题。为了证明这一点,我制作了 python 脚本来生成虚拟文件并打开这些文件。可用的脚本
生成器:https://gist.github.com/juniorh/ef9273911dee551f1048 加载器:https://gist.github.com/juniorh/3b2fb0a80cddb8e407b3生成1M文件,执行命令
# mkdir -p /tmp/1
# python dummyFileGenerator.py -d /tmp/1 -n 1000000 -r 1
然后,通过
加载所有文件# python dummyFileLoader.py -d /tmp/1 -n 1000000 -r 1
加载32766个文件后显示打开文件错误
retry openfile 32766
Traceback (most recent call last):
File "dummyFileLoader.py", line 74, in <module>
File "dummyFileLoader.py", line 59, in openfile
IOError: [Errno 24] Too many open files: '/tmp/1/00/00/7f/fd'
我尝试更改 maxfile 但没有解决
# sysctl -a|grep maxfiles
kern.maxfiles: 1000000
kern.maxfilesperproc: 1000000
# ulimit -a
cpu time (seconds, -t) unlimited
file size (512-blocks, -f) unlimited
data seg size (kbytes, -d) 33554432
stack size (kbytes, -s) 524288
core file size (512-blocks, -c) unlimited
max memory size (kbytes, -m) unlimited
locked memory (kbytes, -l) unlimited
max user processes (-u) 6670
open files (-n) 58284
virtual mem size (kbytes, -v) unlimited
swap limit (kbytes, -w) unlimited
sbsize (bytes, -b) unlimited
pseudo-terminals (-p) unlimited
对此有什么想法吗?
【问题讨论】:
【参考方案1】:您是否确认 python 也看到了正确的限制?
import resource;
print resource.getrlimit(resource.RLIMIT_NOFILE)
【讨论】:
以上是关于如何在 FreeBSD 10.1 上增加每个进程的打开文件数限制?的主要内容,如果未能解决你的问题,请参考以下文章
Delphi XE10.1 引用计数(Delphi XE10.1 Berlin终于增加了对接口的Weak, UnSafe的支持)