Skip site navigation (1) Skip section navigation (2)

FD_SETSIZE with large #s of files/ports in use

From: Barry Nicholson <b(dot)nicholson(at)niceng(dot)com>
To: <pgsql-odbc(at)postgresql(dot)org>
Subject: FD_SETSIZE with large #s of files/ports in use
Date: 2010-05-18 19:39:09
Message-ID: c9c581e2e762ff7fbaba414b2bb54d98@niceng.com (view raw or flat)
Thread:
Lists: pgsql-odbc

An interesting issue came up the other day. We are working with an
application that opens a considerable number of files and tcp/udp ports
(>3000). Unfortunately, that means that the odbc driver fails sometimes due
to a corrupted stack. We eventually figured out what was causing the
corrupted stack. 

 The SOCK_wait_for_ready(SocketClass *sock, BOOL output,
int retry_count) function inside socket.c calls select. Unfortunately, the
socket file descriptor number can be quite large at this time. That means
that the fd_set fds variable can misused. The fd_set variable type only
allows 1024 file descriptors to be used by the calling program on many
Linux versions. This can be changed by setting FD_SETSIZE or __FD_SETSIZE
to a larger number. We have ran tests where we were able to change the
__FD_SETSIZE value in
/usr/src/...linuxversion../linux/include/linux/posix_types.h. The fix
worked well.

 Unfortunately, this isn't a good solution because a software
update to another linux version will invalidate our fix. We've tried
various mechanisms to set FD_SETSIZE or __FD_SETSIZE in socket.c but with
no luck. Has anyone else had this problem and came up with a good fix? Or
is there a better solution?

 Barry Nicholson
 Niceng.com

Responses

pgsql-odbc by date

Next:From: Hiroshi InoueDate: 2010-05-19 00:02:22
Subject: Re: FD_SETSIZE with large #s of files/ports in use
Previous:From: Richard BroersmaDate: 2010-05-17 14:41:48
Subject: Re: ADO - adSchemaColumns doesn't seem to work.

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group