FD_SETSIZE with large #s of files/ports in use

Поиск
Список
Период
Сортировка
От Barry Nicholson
Тема FD_SETSIZE with large #s of files/ports in use
Дата
Msg-id c9c581e2e762ff7fbaba414b2bb54d98@niceng.com
обсуждение исходный текст
Ответы Re: FD_SETSIZE with large #s of files/ports in use  (Hiroshi Inoue <inoue@tpf.co.jp>)
Список 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

В списке pgsql-odbc по дате отправления:

Предыдущее
От: Richard Broersma
Дата:
Сообщение: Re: ADO - adSchemaColumns doesn't seem to work.
Следующее
От: Hiroshi Inoue
Дата:
Сообщение: Re: FD_SETSIZE with large #s of files/ports in use