【问题标题】:What's the max number of file descriptors on Android?Android上文件描述符的最大数量是多少?
【发布时间】: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


【解决方案1】:

Android(JB 和 Lollypop)似乎肯定会为 sysconf(_SC_OPEN_MAX) 返回 256,而它实际上支持最多 1024 个进程的文件描述符。这对我来说似乎是一个错误。

如果我错了,请在 cmets 中更新。

谢谢

【讨论】:

  • 您可以尝试查看谷歌代码源以找出“真实”设置是什么以及这是否确实是一个错误。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-21
相关资源
最近更新 更多