cns*_*nst 8 openbsd file-descriptors limit
一个进程可以在 OpenBSD 上成功获得的最大文件描述符数是多少?
例如,OpenBSDopenfiles
中的login.conf(5)有一个限制。如果我想拥有尽可能多的文件描述符,但仍然不要让失控的进程使系统陷入困境,那么设置什么值是合理的?
例如,如果我指定,例如,20000
内核是否能够为我的应用程序提供所有这些 20000 个 FD?如果我正在运行给定应用程序的多个实例(例如多个工作进程)怎么办?
小智 6
查看源代码,获取最大打开文件的默认值:
extern int maxfiles; /* kernel limit on number of open files */
Run Code Online (Sandbox Code Playgroud)
maxfiles,在 param.c 上定义了maxfiles的公式
int maxfiles = 5 * (NPROCESS + MAXUSERS) + 80;
Run Code Online (Sandbox Code Playgroud)
好的,我们找到了。
#define NPROCESS (30 + 16 * MAXUSERS)
Run Code Online (Sandbox Code Playgroud)
MAXUSERS = - 让我们以 amd64 架构为例:
machine amd64
include "../../../conf/GENERIC"
maxusers 80 # estimated number of users
Run Code Online (Sandbox Code Playgroud)
让我们总结一下所有的东西:
maxfiles = 5 * ((30 + 16 * 80) + 80) + 80
maxfiles = 5 * ((30 + 1280) + 80) + 80
maxfiles = 5 * (1390) + 80
maxfiles = 6950 + 80
maxfiles = 7030
Run Code Online (Sandbox Code Playgroud)
要增加最大打开文件的总数,您首先需要增加最大打开文件内核限制sysctl kern.maxfiles=20000
并增加进程/用户可以打开的文件数量,编辑login.conf
. 这个Tor 守护进程设置为您提供了两个示例。
默认值很有可能已经设置为合理的值,这些值将支持大多数(如果不是全部)用例,它们将基于 OpenBSD 开发人员和管理员多年来开发和使用的运行系统所需的值。用法。我相信任何限制都会以编程方式强制执行,并且只能真正受到可用资源的限制。
在 FreeBSD 上,我们有kern.maxfiles
和 的sysctl 值kern.maxfilesperproc
- 我希望 OpenBSD 也有相同的值。当前的默认限制比几年前要高得多,因为大多数系统现在都有足够的资源,我们不需要限制它们。
在我的台式机上,我的 maxfilesperproc 默认为 18000 - 我正在运行 xfce4,并运行 chrome、liferea、blender、gimp、文本编辑器和终端 - ps 显示 215 个进程,kern.openfiles 为 2683
如果您从太多打开的文件中收到错误,请增加它们,但我怀疑您是否需要这样做,并且我怀疑您将它们增加得太高会使系统超载。
归档时间: |
|
查看次数: |
4949 次 |
最近记录: |