LINUX.ORG.RU

параллельный вызов accept

 


1

2

усем привет, помню где-то читал что можно вызывать accept из нескольких потоков, и там были указаны реализации которые это поддерживают а какие нет, может кто метнуть ссылочку на подобный материал?



Последнее исправление: maxcom (всего исправлений: 1)
Ответ на: комментарий от maxcom

У ядра есть своя «очередь» на прием входящих соединений (на ее длину для конкретного сокета влияет параметр backlog в listen), поэтому клиенты получат свой SYN,ACK до того, как сервер соизволит сделать accept. Лично я зову accept во всех потоках до EAGAIN и чувствую себя прекрасно.

kawaii_neko ★★★★
()
Ответ на: комментарий от kawaii_neko

параметр backlog в listen влияет на очередь УЖЕ установленных соединений. Очередь в ядре зависит от этого параметра net.ipv4.tcp_max_syn_backlog, и там и там бэклог так что ты перепутал

Onito
() автор топика
Ответ на: комментарий от maxcom

Кстати, вот тут списочек настроек сервера http://romantelychko.com/blog/1300/ там не указано изменение параметра nofile в /etc/security/limits.conf. Ведь это по сути самый важный параметр который позволит нам открыть указанное в нём число дескрипторов. Это там про него забыли или он чем-то заменяется там? Я вот не нашел, а ты где берёшь инфу по настройкам сервера?

Onito
() автор топика
Ответ на: комментарий от Onito

параметр backlog в listen влияет на очередь УЖЕ установленных соединений

в классическом варианте это не так. Backlog это очередь на accept, а установление соединения происходит только после accept.

maxcom ★★★★★
()
Ответ на: комментарий от maxcom

я где-то читал( опять не помню где) что в какой-то момент поменяли логику как я описал, а до этого было по твоему

Onito
() автор топика
Ответ на: комментарий от maxcom

незнаю насчет классики времен динозавров, но нынче соединение становится доступным приложению по accept только после 3-way TCP handshake.

Можно пойти дальше и установить TCP_DEFER_ACCEPT и тогда приложению по accept будут возвращаться только те соединения, в которых уже есть байты с данными.

redbaron ★★
()
Ответ на: комментарий от redbaron

во во, про то я и говорил, а параметр TCP_DEFER_ACCEPT очень хорош когда сервер помимо соединения должен ещё принять auth данные.

Onito
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.