Russian Qt Forum
Ноябрь 23, 2024, 01:28
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Работа с сетью
>
Высоконагруженный сервер на Qt, реально ли?
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Высоконагруженный сервер на Qt, реально ли? (Прочитано 12402 раз)
Detonator
Гость
Высоконагруженный сервер на Qt, реально ли?
«
:
Октябрь 19, 2008, 21:39 »
Реально ли реализовать на Qt высоконагруженный сервер с 500-1500 одновременными долговременными подключениями?
Я не особо знаком с этой частью на Linux/MacOSX, но под виндовс это возможно через connection port, использует ли подобные технологии Qt?
Варианты реализации с отдельными потоками на каждое соединений или отдельными потоками на группу из 16-32 соединений не выдерживают больше сотни-двух подключений не зависимо от можности сервера.
Записан
Steven_Orko
Гость
Re: Высоконагруженный сервер на Qt, реально ли?
«
Ответ #1 :
Октябрь 24, 2008, 09:59 »
ИМХО, Так же, как и Виста на втором третьем пне, я думаю.
Цитата: Detonator от Октябрь 19, 2008, 21:39
Варианты реализации с отдельными потоками на каждое соединений или отдельными потоками на группу из 16-32 соединений не выдерживают больше сотни-двух подключений не зависимо от можности сервера.
А что в потоки выносится? Обработка подключений? Обработка запросов клиентов?
Записан
Detonator
Гость
Re: Высоконагруженный сервер на Qt, реально ли?
«
Ответ #2 :
Октябрь 25, 2008, 11:07 »
В потоках вся обработка сообщений. В общем что то типа чат-сервера, приходит сообщение от пользователя, его заголовок проверяется от кого и для какой группы и далее оно пересылается с небольшими изменениями всем другим пользователям той же группы.
На Windows у меня реализовано руками через connection-port c двумя рабочими потоками, 500-600 подключений держит стабильно. Но хотелосьбы кросплатформенного решения.
Записан
Admin
Administrator
Джедай : наставник для всех
Offline
Сообщений: 1988
Re: Высоконагруженный сервер на Qt, реально ли?
«
Ответ #3 :
Октябрь 25, 2008, 12:37 »
я бы порекомендовал для начала почитать отличия apache1 от apache2 - как они сделаны ( кроссплатнформенный он)
почитать про клиент Ultima Online, он в исходах доступен и кучу народа держит по отзывам
потом посмотреть как это к QT привязать
PS: я не большой тут спец, может че не так написал
Записан
Karl-Philipp
Гость
Re: Высоконагруженный сервер на Qt, реально ли?
«
Ответ #4 :
Октябрь 25, 2008, 18:35 »
а что если использовать класс QxtAbstractConnectionManager из qxt?
http://docs.libqxt.org/latest/classQxtAbstractConnectionManager.html
Записан
Tonal
Гость
Re: Высоконагруженный сервер на Qt, реально ли?
«
Ответ #5 :
Октябрь 26, 2008, 10:01 »
Судя по всему этот "connection port" - аналог классического select-а?
2 Detonator
дай хоть ссылку на документацию. Чтоб можно было точно понять что это.
Записан
spirit
Гость
Re: Высоконагруженный сервер на Qt, реально ли?
«
Ответ #6 :
Октябрь 26, 2008, 10:59 »
to Detonator, а вы смотрели экзампл чата поставляющийся вместе ку кьюти
QTDIR/examples/network/chat/
? хз, может поможет.
Записан
Detonator
Гость
Re: Высоконагруженный сервер на Qt, реально ли?
«
Ответ #7 :
Октябрь 26, 2008, 11:10 »
Цитата: Tonal от Октябрь 26, 2008, 10:01
Судя по всему этот "connection port" - аналог классического select-а?
2 Detonator
дай хоть ссылку на документацию. Чтоб можно было точно понять что это.
Извиняюсь, ошибся в названии, на самом деле называется "I/O completion ports"
http://www.gamedev.ru/community/mmorpg/articles/?id=6
Но есть ли аналог под Linux/MacOSX я до сих пор не нашел.
Простой select не масштабируем, т.к. очень медленный когда работаешь с сотнями сокетов. Я с этим еще давно столкнулся.
Вот тут к примеру хорошо описана эта проблема, но статья старая, я не знаю найдено сейчас кросплатформенное решение или нет.
http://www.atnf.csiro.au/people/rgooch/linux/docs/io-events.html
Делить сокеты на группы по 16-32 штук в каждой и каждую в группу обрабатывать в своем потоке - такой способ реализации я предполагаю на крайний случай если не найдется найти ничего лучшего, взаимодействие между самими такими потоками сильно усложнит программу, к тому же незнаю как в линуксе, а под виндовс каждый новый поток отнимает около 1Мб памяти, да и при большом количестве потоков только на переключение и синхронизацию меджду ними тратится ну очень много времени, программа ведет себя уже не очень предсказуемо.
Записан
Tonal
Гость
Re: Высоконагруженный сервер на Qt, реально ли?
«
Ответ #8 :
Октябрь 26, 2008, 11:30 »
http://w0.sao.ru/hq/vch/Publications/Russ/html/linux-posix/node7.html
http://lrn.ru/index.php?module=library&action=show&docid=76&part=878
Ну и вообще
google асинхронный+ввод+вывод+linux
смотрел?
Записан
Detonator
Гость
Re: Высоконагруженный сервер на Qt, реально ли?
«
Ответ #9 :
Октябрь 26, 2008, 11:42 »
Цитата: Tonal от Октябрь 26, 2008, 11:30
http://w0.sao.ru/hq/vch/Publications/Russ/html/linux-posix/node7.html
http://lrn.ru/index.php?module=library&action=show&docid=76&part=878
Ну и вообще
google асинхронный+ввод+вывод+linux
смотрел?
Смотрел. А еще о aio_read() читал такое: "This model looks appealing, until we look under the hood of some aio_*() implementations. The Linux glibc implementation is a case in point: there is no kernel support. Instead, the C library (glibc 2.1) launches a thread per FD for which there are outstanding AIO requests (up to the maximum number of configured threads)."
Ну и кому нужна такая реализация с тысячей потоков в фоне?
Записан
GRiA
Гость
Re: Высоконагруженный сервер на Qt, реально ли?
«
Ответ #10 :
Декабрь 06, 2008, 12:29 »
Есть еще такая штука, как QSocketNotifier... Вроде для ИОПорта то что нужно, только вместо очереди эвентов видимо надо ждать сигнала...
Записан
Страниц: [
1
]
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...