Russian Qt Forum
Ноябрь 25, 2024, 06:41 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Каково максимальное количество открытых портов?  (Прочитано 7103 раз)
virtual_root
Гость
« : Август 16, 2012, 22:48 »

Доброго времени суток! Возник такой вопрос:
Собираюсь писать сервер, который должен принимать соединения от клиентов. Каждому клиенту выделяется свой сокет, новый поток и новый порт по которому с ним будет происходить общение. Вопрос в следующем: предположим подключилось 5000 клиентов(такое возможно, но редко))). Как будет себя вести линуксовый сервер, позволит ли он открыть мне соединения по 5000 портам и обмениваться с ними данными?
Ребята, заранее извините, если вопрос глупый, но нужен ваш совет)
Записан
LisandreL
Птица говорун
*****
Offline Offline

Сообщений: 984


Надо улыбаться


Просмотр профиля
« Ответ #1 : Август 16, 2012, 23:46 »

Порты-то откроются, а вот 5000 потоков в одном приложение ОС вам вряд ли позволит запустить без дополнительных настроек.
А даже если и настроите, то всё равно в итоге ваше приложение будет заниматься только переключением потоков.
Так что лучше пересмотрите концепцию.
Записан
QCasper
Гость
« Ответ #2 : Август 17, 2012, 01:20 »

На 5000 портов нужно немного потюнить лимиты, в этом случае ограничение по количеству открытых файловых дескриптов на процесс. Смотрите такие слова как ulimit -n и setrlimit.
Поток на каждого клиента заводить Вам не нужно совершенно точно. Проектируйте систему так, чтобы все тяжёлые операции выполнялись в отдельных потоках в количестве равном количеству ядер. А в основном потоке выполняйте постановку задач этим рабочим потокам.
Записан
ecspertiza
Супер
******
Offline Offline

Сообщений: 1053


С уважением, мастер конфетного цеха!


Просмотр профиля
« Ответ #3 : Август 17, 2012, 08:54 »

А если уж хочется рассматривать концепцию сокеты в потоках, то уж совсем плохо на один сокет один поток, по хорошему 100 сокетов на поток, хотя можно ввести настроечу для вориации этой цыфры, что бы сравнить производительность.
Записан
QCasper
Гость
« Ответ #4 : Август 17, 2012, 10:35 »

А если уж хочется рассматривать концепцию сокеты в потоках, то уж совсем плохо на один сокет один поток, по хорошему 100 сокетов на поток, хотя можно ввести настроечу для вориации этой цыфры, что бы сравнить производительность.
Абсолютно нет никакой связи количества сокетов с количеством потоков. Практика, логика и здравый смысл подсказывают, что исходить надо из количества потоков, которые процессор может одновременно обрабатывать. Если у процессора 4 ядра с HT, то потоков скорее всего будет около 8-ми. Любые попытки сильно завысить эту цифру ни к чему не приведут, а то и ухудшат дело.
Записан
ecspertiza
Супер
******
Offline Offline

Сообщений: 1053


С уважением, мастер конфетного цеха!


Просмотр профиля
« Ответ #5 : Август 17, 2012, 11:24 »

нужно подумать как это можно было бы проверить, все же к цыфрам больше доверия Улыбающийся Может как вариант, открыть 1000 - 5000 сокетов с разным количеством потоков, и на каждый сокет послать по 100 сообщений, и посчитать среднее время отклика. Чет интересно стало, нужно бы попробовать вечерком Улыбающийся
Записан
QCasper
Гость
« Ответ #6 : Август 17, 2012, 13:52 »

нужно подумать как это можно было бы проверить, все же к цыфрам больше доверия Улыбающийся Может как вариант, открыть 1000 - 5000 сокетов с разным количеством потоков, и на каждый сокет послать по 100 сообщений, и посчитать среднее время отклика. Чет интересно стало, нужно бы попробовать вечерком Улыбающийся

Ну так я же не просто так говорю, а потому что проверял уже. И за 100 сообщений Вы ничего не увидете Улыбающийся Такие бенчмарки обычно миллионами сообщений исчисляются Улыбающийся
Вот ещё, посмотрите любопытную статью по теме: http://blog.virtan.com/2012/07/million-rps-battle.html
Записан
LisandreL
Птица говорун
*****
Offline Offline

Сообщений: 984


Надо улыбаться


Просмотр профиля
« Ответ #7 : Август 17, 2012, 13:57 »

Практика, логика и здравый смысл подсказывают, что исходить надо из количества потоков, которые процессор может одновременно обрабатывать.
Не надо быть столь уж категоричным. Многое зависит от кода выполняемого в потоке. Если потоки спят / ждут в мьютексах / ждут ввода, то количество потоков равное количеству ядер не даст максимальной производительности.
Записан
xokc
Птица говорун
*****
Offline Offline

Сообщений: 976



Просмотр профиля
« Ответ #8 : Август 17, 2012, 14:51 »

Каждому клиенту выделяется свой сокет, новый поток и новый порт по которому с ним будет происходить общение.
Не в плане критики, просто интересно самому: а зачем каждому клиенту свой собственный порт выделять?
Записан
Fat-Zer
Гость
« Ответ #9 : Август 17, 2012, 15:45 »

меня, вот, терзают смутные сомнения, а не станет ли poll узким местом при таком количестве клиентов... и может и правда два/несколько потоков для приёма соединений будут быстрее?

Не в плане критики, просто интересно самому: а зачем каждому клиенту свой собственный порт выделять?
видать, просто ТС оговорился...
Записан
ecspertiza
Супер
******
Offline Offline

Сообщений: 1053


С уважением, мастер конфетного цеха!


Просмотр профиля
« Ответ #10 : Август 17, 2012, 15:54 »

Ну так я же не просто так говорю, а потому что проверял уже. И за 100 сообщений Вы ничего не увидете Улыбающийся Такие бенчмарки обычно миллионами сообщений исчисляются Улыбающийся
Вот ещё, посмотрите любопытную статью по теме: http://blog.virtan.com/2012/07/million-rps-battle.html

Любопытная статейка, если я все верно понял то nodejs не так уж и плох ))))
Записан
QCasper
Гость
« Ответ #11 : Август 17, 2012, 18:59 »

Если потоки спят / ждут в мьютексах / ждут ввода, то количество потоков равное количеству ядер не даст максимальной производительности.

Если у Вас потоки спят, Вы не используете cpu на всю мощь, это либо проблемы в программе, либо нагрузка недостаточно велика, поэтому о производительности тут вообще можно не говорить. Если висят на локах так долго, что нужно ещё потоки добавлять, то нужно что-то делать с такими локами.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.181 секунд. Запросов: 22.