Re: FD_SETSIZE with large #s of files/ports in use
От | Hiroshi Inoue |
---|---|
Тема | Re: FD_SETSIZE with large #s of files/ports in use |
Дата | |
Msg-id | 4BF35CC2.2010801@tpf.co.jp обсуждение исходный текст |
Ответ на | Re: FD_SETSIZE with large #s of files/ports in use (Hiroshi Inoue <inoue@tpf.co.jp>) |
Ответы |
Re: FD_SETSIZE with large #s of files/ports in use
Re: FD_SETSIZE with large #s of files/ports in use |
Список | pgsql-odbc |
Hiroshi Inoue wrote: > Hi, > > Could you please try the attached patch? Oops it doesn't seem to work. Another way is to use poll() instead of select(). regards, Hiroshi Inoue > regards, > Hiroshi Inoue > > Barry Nicholson wrote: >> 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 по дате отправления: