демон и сразу много соединений, natan, 05-Авг-05, 15:33 [смотреть все]Приветствую. Изучаю написание сетевого демона под линукс. Сейчас мой демон имеет структуру: ... 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() ? Спасибо!
|
- демон и сразу много соединений, AnToXa, 20:12 , 05-Авг-05 (1)
- демон и сразу много соединений, natan, 06:06 , 08-Авг-05 (2)
>на каждое соединение делать fork() - это большие проблемы с производительностью и >стабильностью системы, вот упремся в максимальное кол-во процессов и привет, да >и затраты на scheduling, context switches, и сам fork еще никто >не отменял. > >почитайте http://kegel.com/c10k.html. спасибо, почитаю. С другой стороны, на других форумах меня убеждали что потоки на данный момент плохо реализованы в линуксе и использовать их не рекомендовали. Но я тем не менее все равно буду их пробовать. И еще - в моем случае обслуживание каждого соединения по идее не должно занимать более 1сек. времени. Так ли уж форки здесь навредят?
- демон и сразу много соединений, const, 16:12 , 15-Авг-05 (8)
|