[JDEV] Stress testing and connection limits

Benjamin Kahn xkahn at cybersites.com
Wed Jun 14 15:09:05 CDT 2000


	There are two things at issue here.  On my Linux box, the
FD_SETSIZE macro is set to 1024 -- so that's all the FDs that select will
take.  You can check your machine by looking at:

	/usr/include/bits/types.h

	But also, each process is limited to 1024 file descriptors.  This
is a list by OS: (old)

	http://www.nightmare.com/medusa/descriptor_limits.html

	For more information on the select trouble, you can look at: 

	http://www.gnu.org/manual/glibc-2.0.6/html_chapter/libc_8.html

	An interesting note from that page is:
	
Macro: int FD_SETSIZE 
        The value of this macro is the maximum number of file descriptors
	that a fd_set object can hold information about. On systems with a
	fixed maximum number, FD_SETSIZE is at least that number. On some
	systems, including GNU, there is no absolute limit on the number
	of descriptors open, but this macro still has a constant value
	which controls the number of bits in an fd_set; if you get a file
	descriptor with a value as high as FD_SETSIZE, you cannot put that
	descriptor into an fd_set.

	In other words, yes, it is limited, but no...  It doens't look
like it needs to be.

	As a side note, I seem to recall a conversation on the kernel list
about a limit of 64k sockets in the select list!

On Wed, 14 Jun 2000, Eric Bowersox wrote:

> Date: Wed, 14 Jun 2000 13:38:24 -0600
> From: Eric Bowersox <ebowersox at jabber.com>
> Reply-To: jdev at jabber.org
> To: jdev at jabber.org
> Subject: RE: [JDEV] Stress testing and connection limits
> 
> > ulimit on my Linux server that jserver is running on reports 
> > 1024 open file
> > handles. I've tried changing that number with ulimit but I'm 
> > not sure if the
> > number of handles really changes. I don't think so.
> 
> It's not the number of open file handles that is set with ulimit that
> matters, it's the maximum number of file handles in a select() call.  This
> is limited by factors which are set at compile time and difficult to change
> (see below).
> 
> > The 
> > implication from
> > what you've said is that the max number of jabber users 
> > connected at one
> > point is limited. In my case, 1024. Is that true? Isn't that as fairly
> > serious restriction? I was expecting to have a powerful 
> > server with 10's
> > maybe 100's of thousands of connected users.
> 
> I agree, it's serious.  That's why the server developers (Jer and temas,
> namely) are working their asses off to develop the "mux" solution.
> 
> > Can the kernel 
> > be rebuilt with
> > a larger size? If I change the limit to 100,000 or 200,000, 
> > will Linux still
> > run?
> 
> Again, the number of file handles the kernel has is *not relevant* here,
> because the kernel has way more handles available already than a single
> select() can use.  The problem is with the size of the FD_SET structure that
> select() uses.  This structure's size is fixed at compile time, and almost
> certainly cannot be changed without severe breakage in many places (such as
> the C library).
> 
> I have a feeling this is why poll() was introduced, to get around the
> restrictions of select(). However, that doesn't help us, as pth uses
> select() as part of the very core of its event-handling system, and pth is
> some heavy hoodoo-voodoo at the center of the Jabber server, so attempting
> to modify it would be "Not Recommended."
> 
> 					Eric
> 
> _______________________________________________
> jdev mailing list
> jdev at jabber.org
> http://mailman.jabber.org/listinfo/jdev
> 

						-Ben

------------------------------------ |\      _,,,--,,_  ,) ----------
Benjamin Kahn                        /,`.-'`'   -,  ;-;;'
(212) 924 - 2220 ext 201            |,4-  ) )-,_ ) /\
ben at cybersites.com --------------- '---''(_/--' (_/-' ---------------
   I just want to make the world a better place for me to live in.
			-Lucy in a Peanuts comic





More information about the JDev mailing list