Max number of open file descriptors is too low

Joel Reymont <>
Wed Sep 28 14:30:31 CEST 2005


So Mac OSX is not a good platform for running Erlang servers with a  
high number of simultaneous connections, right?

I do see this code for Windows so ERL_MAX_PORTS would work there. I'm  
on Mac OSX, though, and I do not want to run Windows :-(

---
void
sys_init_io(byte *buf, Uint size)
{
     tmp_buf = buf;
     tmp_buf_size = size;
     cerr_pos = 0;

     /* Now heres an icky one... This is called before drivers are,  
so we
        can change our view of the number of open files possible.
        We estimate the number to twice the amount of ports.
        We really dont know on windows, do we? */
     max_files = 2*erts_max_ports;
---

The whole thing is sad although I do understand the issues. I noticed  
that my server starts misbehaving at about 2,200 connections. No more  
connections are accepted roughly at that point. Could have something  
to do with select() and the number of open sockets.

     Thanks, Joel

On Sep 28, 2005, at 1:48 PM, Bjorn Gustavsson wrote:

> The code is correct.
>
> max_files will be adjusted downwards only if select() is actually  
> used.
>
> On Mac OS X select() IS used. On Mac OS X 10.3, poll() is actually
> emulated using select(), so we call select() ourselves. On Mac OS X  
> 10.4,
> there is a real poll() but it does not work for devices (including the
> terminal), so we use select() instead.

--
http://wagerlabs.com/







More information about the erlang-questions mailing list