gpt4 book ai didi

macos - OSX 上每个进程的最大打开文件句柄数(以及如何增加)

转载 作者:行者123 更新时间:2023-12-03 10:15:38 80 4
gpt4 key购买 nike

编辑:我现在有一个解决方案,但我真的很欣赏不同限制的简明描述,即由 FD_SIZE、launchtl 限制文件、sysctl -w kern.maxfilesperproc、ulimit 等设置的限制)

有人可以帮助我了解 OSX 上打开文件句柄的限制。 ulimit 给了我一个答案:

$ ulimit -a
...
open files (-n) 256

我不能用 ulimit改变这一点,但人们建议使用 launchctl (例如 http://usrinapto.wordpress.com/2010/03/06/mac-os-x-10-6-max-open-files-too-many-open-files/ )

使用它不会改变 ulimit 报告的限制, 尽管。

但是,正如 lsof 所报告的,我的应用程序似乎能够在崩溃前打开 10k 个文件。 ,例如:
$ lsof -p 87599 | wc
10279 92505 1418903

(它可靠地在 10279 和 10305 个打开的文件之间崩溃)

因此,显然存在不同的限制。我还看到了 FD_SETSIZE 的谈话(在上面的链接上) .

有人可以向我解释什么是不同的限制,以及它们是如何设置的吗?

如果相关,我正在使用 SWIG 包装用于 Java 的 C/C++ 库。

编辑:
我也试过:
sudo sysctl -w kern.maxfiles=20000

没有成功。还
#define FD_SETSIZE 20000

没有效果。

编辑:
也试过
launchctl limit maxfiles 20000 20000

没有效果。

编辑:
解决方案:
sysctl -w kern.maxfilesperproc=20000

(来自 http://krypted.com/mac-os-x/maximum-files-in-mac-os-x/)

编辑:我写了一个小程序来测试这个(基于 How to increase the limit of "maximum open files" in C on Mac OS X ),发现我可以要求的最大打开文件数是 10240:
#include <sys/resource.h>
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>

struct rlimit limit;
void setLimit( int l );
void getLimit();

int main( int argc, char* argv[] )
{
getLimit();
setLimit(10240);
getLimit();
return 1;
}

void setLimit( int lim )
{
limit.rlim_cur = lim;
limit.rlim_max = lim;
printf( "Setting limit to %d, %d\n", limit.rlim_cur, limit.rlim_max );
if (setrlimit(RLIMIT_NOFILE, &limit) != 0) {
printf("setrlimit() failed with errno=%d\n", errno);
exit(1);
}
}

void getLimit()
{
/* Get max number of files. */
if (getrlimit(RLIMIT_NOFILE, &limit) != 0)
{
printf("getrlimit() failed with errno=%d\n", errno);
exit(1);
}
printf("The soft limit is %llu\n", limit.rlim_cur);
printf("The hard limit is %llu\n", limit.rlim_max);
}

最佳答案

http://krypted.com/mac-os-x/maximum-files-in-mac-os-x/ 上找到:

sysctl -w kern.maxfilesperproc=20000

关于macos - OSX 上每个进程的最大打开文件句柄数(以及如何增加),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5377450/

80 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com