>Сервер запускает на каждого клиента pthread_create. Каждый Тред слушает (select) свои 5-20
>сокетов. Нагрузка - 200 клиентов/секунду (и еще планируется нарастить до 500
>:). Лимит по количеству открытых файлов вроде как поднят до 8192.
>(__FD_SETSIZE=8192, в include/bits/typesyzes.h, incude/linux/ limits.h, fs.h, posix_types.h).
>Операционка Suse Linux 8.2.
>
Да вы, батенька, фашист :).
При таком количестве клиентов лучше не создавать гору потоков, а использовать
пул оных относительно небольшого размера (в любом случае не больше, чем
4 x количество_процессоров). При обнаружении по poll() либо select() активности
клиента дескриптор соединения изымается из poll()-select()ных структур и ставится
в очередь, из коей соединения конкурентно выгребают потоки, входящие в пул.
Совершив не слишком крупный квант работы, можно вернуть соединение
на прослушку, дабы обнаружить дальнейшую активность клиента.
Само собой, возможны и другие варианты. Но исходя из данного вами описания,
проще всего переделать именно на такой вариант.
>И вот все это валится :(
>[...]
Нисколько не удивлён.
>
>И еще, насколько я проиграю если перейду с select-а на poll?
На при переходе на poll() выигрыш разве что в снятии формального ограничения
на число прослушиваемых дескрипторов. Более эффективное решение - /dev/poll.
Успехов.