[OT] select and sysread problem on solaris

Mark Overmeer mark at overmeer.net
Thu Sep 11 11:23:39 BST 2008

* Paul Johnson (paul at pjcj.net) [080911 09:20]:
> On Thu, Sep 11, 2008 at 02:36:55AM +0100, Andy Armstrong wrote:
> >     printf( "%d\n", FD_SETSIZE );
> The output is 1024, but I'm not convinced the problem lies in this area.

See http://blogs.sun.com/elving/entry/too_many_open_files
Do you have perl compiled as 32bit or 64bit?  It wouldn't wonder
me if Solaris lied to Perl about the max number of file-descriptors.

> We have just moved from under 128 files per select to just over, but I
> don't think this is the problem.  Additionally, the system will seem to
> work fine for many Gb of data before this problem is (seemingly
> randonly) triggered.

Clients address your service via sockets which count as file-descriptors
as well.  It is not only a limit on what you can pass with select():
the whole sum of pipes and sockets over all threads within one process
can not exceed 256.  (At least, that is my interpretation of the docs)

       Mark Overmeer MSc                                MARKOV Solutions
       Mark at Overmeer.net                          solutions at overmeer.net
http://Mark.Overmeer.net                   http://solutions.overmeer.net

More information about the london.pm mailing list