> I believe the runtime uses select(), which has a hard limit (enforced
> by the kernel) that the maximum file descriptor id be 1023.  (select()
> uses bitmasks and there is a limit on the size of a bitmask; see
> FD_SETSIZE.)

I understand. Thank you.

> Reduce this to 1024, otherwise the runtime will eventually find itself
> dealing with file descriptors beyond the select() limit mentioned
> above.  Someone with more knowledge of the Haskell runtime will have
> to advise as to possible ways around it if you really need more than
> 1024 file descriptors.

I used to execute my server with the limit of 1024 since this is the
default limit of my machine. At that time, I suffered from the
following errors:

        rpf: user error (Cannot create OS thread.)
        rpf: accept: resource exhausted (Too many open files)

So, I pushed the limit to 65536.

I don't believe my server receives 1024 connections at once. So, I guess
file descriptors leak.

Does anyone know what happens when a TCP connection is reset by the
peer and its handle disappears. Does the file descriptor bound to the
handle leak?

--Kazu
_______________________________________________
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users

Reply via email to