Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » Network
  • » Максимальное количество открытых сокетов на Tornado [RSS Feed]

#1 Сен. 16, 2013 09:30:32

Radist_101
Зарегистрирован: 2013-07-15
Сообщения: 26
Репутация: +  0  -
Профиль   Отправить e-mail  

Максимальное количество открытых сокетов на Tornado

Здравствуйте, любители Python'а! Пишется сервер на торнадо, к которому могут подключится множество клиентов и через каждую минуту подключенный клиент должен отправить строку данных. И вот вопрос, сколько открытых сокетов одновременно может держать сервер на Tornado ?

Офлайн

#2 Сен. 16, 2013 13:04:51

Lexander
От:
Зарегистрирован: 2008-09-19
Сообщения: 1139
Репутация: +  33  -
Профиль   Отправить e-mail  

Максимальное количество открытых сокетов на Tornado

Это зависит от мощности сервера(-ов) и настроек ОС.
Тысячи и десятки тысяч вас устроят?

Например, в ОС есть ограничение на количество открытых дескрипторов.
От системы к системе эта настройка по-умолчанию может быть и 1024, и 8192, и 65535.
Конечно, ее можно менять в зависимости от мощности сервера.

Делайте обработку запросов в Торнадо асинхронной и настраивайте количество обработчиков по количеству ядер процессора.
На не самом мощном 4-ядерном AMD Opteron можно обрабатывать 8k постоянных соединений.

Не забывайте, что каждый входящий запрос требует выделение памяти, которое зависит уже от алгоритма.



Офлайн

#3 Сен. 16, 2013 20:43:51

Radist_101
Зарегистрирован: 2013-07-15
Сообщения: 26
Репутация: +  0  -
Профиль   Отправить e-mail  

Максимальное количество открытых сокетов на Tornado

Спасибо за ответ!

Lexander
Тысячи и десятки тысяч вас устроят?
А на счет этого, то меня это не устроит, нужно намного больше, придется разрывать соединение, потом снова коннектится.


Lexander
Делайте обработку запросов в Торнадо асинхронной и настраивайте количество обработчиков по количеству ядер процессора.
А здесь можно чуть по подробней, пожалуйста, я только не давно начал осваивать Tornado. Как сделать работу с сокетами асинхронной, и как можно использовать преимущества нескольких ядер, не теряя при этом в быстродействии.

Офлайн

#4 Сен. 17, 2013 00:15:30

o7412369815963
От:
Зарегистрирован: 2009-06-17
Сообщения: 1986
Репутация: +  32  -
Профиль   Отправить e-mail  

Максимальное количество открытых сокетов на Tornado

Radist_101
А на счет этого, то меня это не устроит, нужно намного больше, придется разрывать соединение, потом снова коннектится.
Если у вас нет по долгу висящих соединений, то можно воспользоваться многопоточным фреймфорком (зависит от задачи опять же)

Офлайн

#5 Сен. 17, 2013 10:44:13

Lexander
От:
Зарегистрирован: 2008-09-19
Сообщения: 1139
Репутация: +  33  -
Профиль   Отправить e-mail  

Максимальное количество открытых сокетов на Tornado

Radist_101
А на счет этого, то меня это не устроит, нужно намного больше, придется разрывать соединение, потом снова коннектится.
Странно, я думал, что донес мысль о масштабируемости.
Что вам мешает добавить серверов?
Только, в этом случае, разобраться с Торнадо - это самое простое, что вам предстоит.

Я вам даже больше скажу.
Вот выберите вы сервера себе под расчетную нагрузку, настроите их в единую систему, а потом вам обязательно нужно будет сделать тестовый прогон и вы получите реальную производительность, которая гарантированно будет отличаться от расчетной.
А еще позже, под реальной нагрузкой вы увидите, что фактическая производительность снова отличается - как от расчетной, так и от тестовой.

Radist_101
Как сделать работу с сокетами асинхронной, и как можно использовать преимущества нескольких ядер, не теряя при этом в быстродействии.
Это есть в документации с примерами.
Лучше это смотреть в первоисточнике.
Вот для примера: http://www.tornadoweb.org/en/stable/gen.html - здесь можно посмотреть 2 способа, как организовать асинхронную работы.



Офлайн

#6 Окт. 7, 2013 18:43:05

cpu
От:
Зарегистрирован: 2011-12-29
Сообщения: 58
Репутация: +  1  -
Профиль   Отправить e-mail  

Максимальное количество открытых сокетов на Tornado

Еще такой ньюанс.
Если вы будете вешать торнадо прямо на сокет, минуя балансировщик, не возникнет ли такой ситуации, когда, я, скажем, как злодей, открываю к вашему серверу 1000 коннектов, каждый из которых тянет ответ от сервера ну ооооочень медлено, как обкуренный эстонец, скажем, по килобайту в секунду. Как скоро у торнады закончатся подпроцессы?
Lexander в этом плане совершенно прав.
А так, насколько я понимаю, торнадо может держать сокетов столько, сколько позволит ОС.



Офлайн

#7 Окт. 8, 2013 09:54:41

o7412369815963
От:
Зарегистрирован: 2009-06-17
Сообщения: 1986
Репутация: +  32  -
Профиль   Отправить e-mail  

Максимальное количество открытых сокетов на Tornado

cpu
не возникнет ли такой ситуации, когда, я, скажем, как злодей, открываю к вашему серверу 1000 коннектов, каждый из которых тянет ответ от сервера ну ооооочень медлено, как обкуренный эстонец, скажем, по килобайту в секунду. Как скоро у торнады закончатся подпроцессы?
Не возникнет.
Подпроцессы тут ни причем, торнадо может обработать их все в одном потоке.

Офлайн

#8 Окт. 8, 2013 10:43:15

cpu
От:
Зарегистрирован: 2011-12-29
Сообщения: 58
Репутация: +  1  -
Профиль   Отправить e-mail  

Максимальное количество открытых сокетов на Tornado

Если я правильно понимаю торнаду, то когда я тяну порцию данных через сокет, то конечный python обработчик занят только отдачей мне потока данных, верно или нет?



Офлайн

#9 Окт. 9, 2013 15:17:14

o7412369815963
От:
Зарегистрирован: 2009-06-17
Сообщения: 1986
Репутация: +  32  -
Профиль   Отправить e-mail  

Максимальное количество открытых сокетов на Tornado

cpu
Если я правильно понимаю торнаду, то когда я тяну порцию данных через сокет, то конечный python обработчик занят только отдачей мне потока данных, верно или нет?
Типа того, но лучше сказать, не тянет порцию, а считывает уже скаченную порцию (через epool или т.п.) это занимает милисекунды, а может и меньше. Обработка асинхронная, торнадо не ждет порцию, без разницы когда она появится.

cpu
скажем, по килобайту в секунду
“на пальцах” будет так: этот килобайт потихоньку копится в стеке (ОС), потом торнадо за 0,1 мс считывает эту порцию, в итоге получается, что в секунду торнадо может обработать 10000 таких клиентов, а суммарный трафик составит 10Мб/сек.

Офлайн

  • Начало
  • » Network
  • » Максимальное количество открытых сокетов на Tornado[RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version