【发布时间】:2015-04-04 02:10:38
【问题描述】:
我们正在使用 Erlang VM 在 Android 上运行 Couch DB。最近我们遇到了一个限制,Erlang 抱怨超出了文件描述符。
Erlang 计算最大文件描述符的方法在这里 - https://github.com/erlang/otp/blob/maint/erts/emulator/sys/common/erl_poll.c#L2308-L2320
鉴于以上代码,在 Android 上将 max_fds 设置为什么?在我们的例子中,它会抛出错误,提示文件描述符超过 255。这是一个如此低的数字吗?
另外,我们是否可以增加此限制,以便在 Android 上获得 512 或 1024 max_fds?
更新:我得到了一些额外的信息。 Android 有 sysconf 方法,它返回 256 以获得最大打开文件描述符限制。奇怪的是Android允许一个进程打开1024个文件。因此,似乎 sysconf 在系统支持的范围不止于此的情况下返回了错误的值。这是 Android 中的错误吗?
【问题讨论】:
-
首先我会检查为什么 Vm 需要这么多 FD(说真的,它需要同时打开 255 个文件吗?)...然后我会尝试增加限制...记住有整个设备的 max_fds 限制为 1024 的设备
-
@Selvin - 这些不仅仅是文件。它包括套接字、管道、文件等。我知道我们可能期望过高。但是,实际上 255 的限制似乎太少了。
标签: android resources file-descriptor