The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"демон и сразу много соединений"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [Проследить за развитием треда]

"демон и сразу много соединений" 
Сообщение от natan Искать по авторуВ закладки on 05-Авг-05, 15:33  (MSK)
Приветствую.

Изучаю написание сетевого демона под линукс. Сейчас мой демон имеет структуру:

...
sd = socket();
bind(sd, ... );

if ( listen(sd, 5) == -1)
{ ... }

for (;;) {

ns = accept(sd, ...);
pid=fork();
if (pid == 0)       /* child */
{
close(sd);
...
recv();
...
close(ns);
exit(0);   /* exit status of child */
}

close(ns);     /* parent */

}

Вопрос такой: при этой архитектуре будут ли у демона серьезные ограничения по числу одновременно обрабатываемых запросов? Если да, то что нужно менять в структуре приложения? Поможет ли здесь select()/poll() ?

Спасибо!
  Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

 Оглавление

Индекс форумов | Темы | Пред. тема | След. тема
Сообщения по теме

1. "демон и сразу много соединений" 
Сообщение от AnToXa emailИскать по авторуВ закладки(ok) on 05-Авг-05, 20:12  (MSK)
>Приветствую.
>
>Изучаю написание сетевого демона под линукс. Сейчас мой демон имеет структуру:
-----
>for (;;) {
>
>ns = accept(sd, ...);
>pid=fork();
-----

>Вопрос такой: при этой архитектуре будут ли у демона серьезные ограничения по
>числу одновременно обрабатываемых запросов? Если да, то что нужно менять в
>структуре приложения? Поможет ли здесь select()/poll() ?
>
>Спасибо!
на каждое соединение делать fork() - это большие проблемы с производительностью и стабильностью системы, вот упремся в максимальное кол-во процессов и привет, да и затраты на scheduling, context switches, и сам fork еще никто не отменял.

почитайте http://kegel.com/c10k.html.

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

2. "демон и сразу много соединений" 
Сообщение от natan Искать по авторуВ закладки on 08-Авг-05, 06:06  (MSK)
>на каждое соединение делать fork() - это большие проблемы с производительностью и
>стабильностью системы, вот упремся в максимальное кол-во процессов и привет, да
>и затраты на scheduling, context switches, и сам fork еще никто
>не отменял.
>
>почитайте http://kegel.com/c10k.html.
спасибо, почитаю.
С другой стороны, на других форумах меня убеждали что потоки на данный момент плохо реализованы в линуксе и использовать их не рекомендовали. Но я тем не менее все равно буду их пробовать.
И еще - в моем случае обслуживание каждого соединения по идее не должно занимать более 1сек. времени. Так ли уж форки здесь навредят?
  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

3. "демон и сразу много соединений" 
Сообщение от AnToXa emailИскать по авторуВ закладки(ok) on 08-Авг-05, 14:19  (MSK)
>С другой стороны, на других форумах меня убеждали что потоки на данный
>момент плохо реализованы в линуксе и использовать их не рекомендовали.
нормально реализованы, все прекрасно работает, причем довольно быстро, using kernel 2.6 и nptl.

>И еще - в моем случае обслуживание каждого соединения по идее не
>должно занимать более 1сек. времени. Так ли уж форки здесь навредят?

ну я могу открыть 5000 соединений к этому вашему серверу меньше чем за 1 секунду :)

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

4. "демон и сразу много соединений" 
Сообщение от grib Искать по авторуВ закладки on 09-Авг-05, 05:08  (MSK)
>>С другой стороны, на других форумах меня убеждали что потоки на данный
>>момент плохо реализованы в линуксе и использовать их не рекомендовали.
>нормально реализованы, все прекрасно работает, причем довольно быстро, using kernel 2.6 и
>nptl.
в моем случае я жестко привязан к ядру 2.4.18

>
>>И еще - в моем случае обслуживание каждого соединения по идее не
>>должно занимать более 1сек. времени. Так ли уж форки здесь навредят?
>
>ну я могу открыть 5000 соединений к этому вашему серверу меньше чем
>за 1 секунду :)
но ведь можно и ограничить кол-во соединений, пуская сервер через inetd :)

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

5. "демон и сразу много соединений" 
Сообщение от AnToXa emailИскать по авторуВ закладки(ok) on 09-Авг-05, 11:43  (MSK)
на каждую ж..у с резьбой найдется х... с винтом конечно :)
но остальных проблем это не решает anyway
  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

6. "демон и сразу много соединений" 
Сообщение от roman Искать по авторуВ закладки(??) on 09-Авг-05, 12:24  (MSK)
>на каждую ж..у с резьбой найдется х... с винтом конечно :)
>но остальных проблем это не решает anyway
а все-таки - как обстоят дела с тредами в 2.4.x?

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

7. "демон и сразу много соединений" 
Сообщение от AnToXa emailИскать по авторуВ закладки(ok) on 09-Авг-05, 12:31  (MSK)
>>на каждую ж..у с резьбой найдется х... с винтом конечно :)
>>но остальных проблем это не решает anyway
>а все-таки - как обстоят дела с тредами в 2.4.x?

http://people.redhat.com/drepper/nptl-design.pdf

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

8. "демон и сразу много соединений" 
Сообщение от const Искать по авторуВ закладки(??) on 15-Авг-05, 16:12  (MSK)
В линуксе потоки от процессов мало чем отличаются. Есть два принципиально разных способа: fork/clone и select. Первый проще реализовать, а второй быстрее работает (только если хорошо подумать).
  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх


Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ]
Пожалуйста, прежде чем написать сообщение, ознакомьтесь с данными рекомендациями.




Спонсоры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2022 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру