Mac Os X下文件描述符限制

今天在Mac Os X系统下启动erlang应用时报错误:

driver_select(0x0000000000000288, 1053, ERL_DRV_WRITE ERL_DRV_USE, 1) by tcp_inet driver #Port<0.2696> failed: fd=1053 is larger than the largest allowed fd=1023

文件描述符限制,先ulimit -n查看一下,设置值远大于1024,没问题;再查看系统内核设置,sysctl -a一下,kern.maxfiles=12288,kern.maxfilesperproc=10240,也没问题,纳闷了,再+P -env ERL_MAX_PORTS各种启动参数调试,依然不好使,抓狂中google、百度各种折腾,最后搜到原因是在erts/emulator/sys/common/erl_poll.c中max_fds的值设置为FD_SETSIZE,而Mac Os X系统中FD_SETSIZE在/usr/include/sys/_structs.h中限制为1024。原因找到了,看解决办法,貌似有两种解决办法:

1、修改系统头文件/usr/include/sys/_structs.h__DARWIN_FD_SETSIZE的值

> 1) Save old epmd.
>
> 2) Modify __DARWIN_FD_SETSIZE in /usr/include/sys/_structs.h and make it, say, 16384.
>
> 3) Recompile Erlang.
>
> 4) Restore old epmd since it can't handle more than 1024 fds.

2、编译erlang时在./configure的参数中加入CFLAGS="-DFD_SETSIZE=10000 -DDARWIN_UNLIMITED_SELECT"

两种方法我都还没尝试,好不好使不知道,先记下来再研究,但貌似回答问题的有说这个值不要轻易修改,有可能影响性能。

更详细的信息看链接:

https://github.com/mxcl/homebrew/issues/6143

http://erlang.2086793.n4.nabble.com/kpoll-still-using-select-td2116370.html


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值