URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 825
[ Назад ]

Исходное сообщение
"Максимально число сокетов, опрашиваемых select()"

Отправлено Максим Мороз , 03-Июл-02 12:31 
Столкнулся с тем, что FD_SETSIZE==1024, соответственно больше сокетов опрашивать не получается. Есть ли какие пути решения этой проблемы? Требуется открывать на каждого клиента порядка 6-10 сокетов, учитывая, что клиентов на один сервер планируется порядка 1000 (2-3 :)) ), то получается полная финя :)) Что посоветует многоуважаемый all? Сейчас я пытаюсь разбить клиентов на группы, чтобы каждую группу обслуживал свой процесс или нить.

И еще вопрос сильно ли будет грузиться VM Linux,FreeBSD и Solaris, если будет вертеться 1000-2000 потоков(threads). Есть ли какие-нить грабли?


Содержание

Сообщения в этом обсуждении
"RE: Максимально число сокетов, опрашиваемых select()"
Отправлено Арлекин , 03-Июл-02 15:20 
Могу сказать только по соляре.
>Столкнулся с тем, что FD_SETSIZE==1024, соответственно больше сокетов опрашивать не получается. Есть
>ли какие пути решения этой проблемы?
У сантехников на сайте полно доки и среди админских руководств есть инструкция по настройке ядра. Что-то типа "Tuning parameters". Там написано, как можно изменить параметры соляркиного ядра через установки /etc/system. Рой там. Если эту цифру и можно поменять, то только так.
>Требуется открывать на каждого клиента порядка 6-10 сокетов, учитывая, что клиентов на один сервер планируется порядка
>1000 (2-3 :)) ), то получается полная финя :)) Что посоветует
>многоуважаемый all? Сейчас я пытаюсь разбить клиентов на группы, чтобы каждую
>группу обслуживал свой процесс или нить.
>
>И еще вопрос сильно ли будет грузиться VM Linux,FreeBSD и Solaris
Все зависит от железа. На 2х процессорном Sun Fire 800 и выше видимо будет работать, но лучше таки доку почитать.
>, если будет вертеться 1000-2000 потоков(threads). Есть ли какие-нить грабли?



"RE: Максимально число сокетов, опрашиваемых select()"
Отправлено Максим Мороз , 03-Июл-02 16:50 
>Могу сказать только по соляре.
>>Столкнулся с тем, что FD_SETSIZE==1024, соответственно больше сокетов опрашивать не получается. Есть
>>ли какие пути решения этой проблемы?
>У сантехников на сайте полно доки и среди админских руководств есть инструкция
>по настройке ядра. Что-то типа "Tuning parameters". Там написано, как можно
>изменить параметры соляркиного ядра через установки /etc/system. Рой там. Если эту
>цифру и можно поменять, то только так.
спасибо, поищу... Скорее всего не прокатит, потому как fdset - битовый массив :((

>>Требуется открывать на каждого клиента порядка 6-10 сокетов, учитывая, что клиентов на один сервер планируется порядка
>>1000 (2-3 :)) ), то получается полная финя :)) Что посоветует
>>многоуважаемый all? Сейчас я пытаюсь разбить клиентов на группы, чтобы каждую
>>группу обслуживал свой процесс или нить.
>>
>>И еще вопрос сильно ли будет грузиться VM Linux,FreeBSD и Solaris
>Все зависит от железа. На 2х процессорном Sun Fire 800 и выше
>видимо будет работать, но лучше таки доку почитать.
Ходят слухи, что схожая задача вертелась на однопроцессорной интеловской машине. Сами треды не ресурсоемкие. Интересен оверхед VM.

>>, если будет вертеться 1000-2000 потоков(threads). Есть ли какие-нить грабли?



"RE: Максимально число сокетов, опрашиваемых select()"
Отправлено MaxZinal , 07-Июл-02 00:01 
А насколько критична "мгновенность" отклика? Если задержка
порядка 50 мс допустима, то можно устроить ожидание с
таймаутом по части дескрипторов, потом по другой части и
так далее, пока все не обойдём.

Вообще сходные поблемы решаются в компоненте "Реактор"
мультиплатформенной библиотеки ACE
().

Кроме того, полезно действительно заглянуть на docs.sun.com.
Там есть действительно толковые и обстоятельные руководства
по программированию соответствующих софтин. Естественно,
с ориентацией на Solaris, но поняв общий подход, можно
заняться уточнением деталей на других осях...