От чего зависит скорость, с которой socket-server способен открывать новые сокеты?

ivlad

Новичок
От чего зависит скорость, с которой socket-server способен открывать новые сокеты?

Есть простой сервер на php: создаёт слушающий сокет, потом accept'ит входящие соединения. Тесты показывают удивительную вещь. Если слушающий сокет создавать функцией socket_create_listen(), то потом сервер открывает сокеты для новых подключений В РАЗЫ быстрее, чем если listener создавался последовательными вызовами socket_create(), socket_bind() и socket_listen().

У кого-нибудь есть мысли, почему так?
 

dimagolov

Новичок
в абсолютных цифрах это сколько?
и какая операционка/сервер?
 

ivlad

Новичок
В абсолютных:
Без тормозов ~200 сокетов в секунду
C тормозами 2-3 сокета в секунду

$ uname -a
Linux [my host-name] 2.6.9-42.0.2.ELsmp #1 SMP Wed Aug 23 00:17:26 CDT 2006 i686 i686 i386 GNU/Linux
 

ys

отодвинутый новичок
ivlad

Что то у вас не так.

Судя по сишному коду socket_create_listen(), вызывает php_open_listen_sock(), который и вызывает:
gethostbyname()
htons()
socket()
bind()
listen()

В общем, тоже-самое.
Может Вы какой флажек забыли указать?
 

ivlad

Новичок
ys,

Вот код, который создаёт "тормознутый" сокет (обработка ошибок вырезана):

Код:
$listener = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
socket_bind($listener, $cfg_listenIp, $cfg_listenPort);
socket_listen($listener);
Вроде как забыть банально нечего :) Возможно нужно указать какие-то опции с помощью socket_set_option(). Но я не нашёл среди опций чего-либо, могущего влиять на тормознутость.

Може вы знаете?
 
Сверху