[Date Prev][Date Next] [Chronological] [Thread] [Top]

FD_SETSIZE problems on a high-end server



Hi folks.

This is my first post on this list.

Well, I'm having troubles with a high-end server, due to the 
_FD_SETSIZE (from glibc) limitation.

I have a Debian Sarge/OpenLDAP service on a P4 server with
1Gb RAM which have around 8000 records.

This server attends to another mail server which have Postfix,
Cyrus and SASL.

The Postfix server do a lookup on a aliases table on this LDAP 
and all other services ask for the authenticacion to SASL which
ask to the LDAP service.

The real problem, is that the SASL services is generating more
than 1024 concurrent sockets to the LDAP service which block
the remains incomming sockets.

I already do all the possible changes to the server (ulimit, 
sysctl, etc) without a solution.

All the incoming connections stop at the 1024 concurrent socket.

I was looking at the source code of the OpenLDAP, and I figured 
out that it uses the select() function.

This takes the _FD_SETSIZE glibc value which is hardcoded to 1024
and I find no way to change this value on the fly.

My questions are:

- Exists another OpenLDAP implementation with the poll() function
instead select()? A patch or something?

- How can solve this problem without recompile the glibc with a 
higher value? 

The server is in a production environment, and I don't want 
make this kind of changes on it.

If anyone knows something, it will be very useful. 

TIA.

My best regards.


-- 
Rodrigo Henriquez M.		http://www.corporacionlinux.cl
Corporacion Linux S.A. 		Fonos: 02 2442988 - 02 2444250