LINUX.ORG.RU

Высоконагруженный сервер на Qt


0

2

Кто-нибудь когда-нибудь писал сервер чего-либо на Qt, в требованиях которого значилось «устойчив к высокой нагрузке»?

Насколько сам Qt позволяет сделать такое?

Конкретные цифры, что именно означает высокая нагрузка, в моем случае такие: за 1 секунду сервер должен обрабатывать 1000-5000 клиентов. На один сеанс приходится примерно 10КБ трафика от клиента и 10-100КБ от сервера.

★★

QT, не QT... масштабируемость в любом случае придется предусматривать. и еще не совсем понятно, что значит «обрабатывать»... что конкретнее предполагается делать с запросами клиентов?

mrs
()
Ответ на: комментарий от devl547

> на VB пиши, на VB!

Главное погромче пернуть, чтобы все заметили, какой ты умный.

anonymous
()
Ответ на: комментарий от mrs

Предполагается, что клиент будет присылать запрос в виде plain-text или xml размером <= 10KБ, а сервер отвечать на него 10-50 КБ.

Сама обработка сводится к проходу по нескольким спискам и таблицам в памяти и небольшим расчетам.

bk_ ★★
() автор топика

невижу ничего плохого в использовании

guilder
()

а чем жаба-то не устроила?

annulen ★★★★★
()

Устойчив к высокой нагрузке - это ГСМ какой-то. Могу посоветовать разве что к твоему qt еще boost asio и вперед.

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

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

mrs
()
Ответ на: комментарий от geekless

Чтобы не писать на голом c++ ведь. Хотя писать сервер на с++ - вообще ссзб

note173 ★★★★★
()

Тебе архитектура масштабируемая нужна, тут дело не в Qt

vertexua ★★★★★
()

И еще много будет значить что делаетя на самом сервере, если там запросик так где-то под 500 мс, то ты сам понял )) Главное не накосячь с потоками.

А лучше используй готовые масштабируемые решения. И С++ тут не в помощь

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

Видимо теперь будет QTсервер, брат зюзероутера.

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

Кутешные сокеты заюзать решил? Что-то я сомневаюсь, что они используют epoll, kqueue или overlapped io, чтобы юзать их под высокими нагрузками. Кутешные сокеты вообще дуршлаг тот еще.

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

Ой, увидел, что ответил не ТСу, но суть от этого не меняется

yoghurt ★★★★★
()

Вообще у куте довольно-таки жирный рантайм, в этой ситуации он будет только мешаться.

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

>возможно хватит и одного потока для обработки запросов, на современном железе

Если Qt юзает селект, о 5K обслуживаемых клиентов в одном потоке никакая речь идти не может

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

Намного лучше для этого Java NIO, которое как раз и юзает вышеописанных ребят под соответсвующими и юниксами и виндой. Но лучше просто взять и заюзать Grizzly, если хочется масштабируемого standalone

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

Writing scalable server applications in the Java™ programming language has always been difficult. Before the advent of the Java New I/O API (NIO), thread management issues made it impossible for a server to scale to thousands of users. The Grizzly NIO and Web framework has been designed to help developers to take advantage of the Java™ NIO API. Grizzly's goal is to help developers to build scalable and robust servers using NIO and we are also offering extended framework components: Web Framework (HTTP/S), Bayeux Protocol, Servlet, HttpService OSGi and Comet.

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

Можно и это в принципе. А если побольше готовенького, то просто Apache Thrift

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

А разве Qt умеет что-то кроме селекта?????

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

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

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

mrs
()

Если qt для диспетчеризации использует poll или тем более select, то это не реально.

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

5К * 10Кб ~ 400Мбит/сек и в 10 раз больше от сервера к клиенту. Даже если не юзает селект, слабо себе представляю как оно поедет

arhibot
()
Ответ на: комментарий от thevery

а зачем вам вообще Qt нужен? в нём есть какие-то особые фичи, которых нет в java?

да, производительность.

По сабжу, бери да пиши, единственное могу посоветовать юзать напрямую вызовы методов вместо сигнал-слот, когда это возможно, оно даёт свои накладники иногда нафиг ненужные.

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

>да, производительность.
и на каких операциях (особенно высоконагруженных) вам не хватает скорости java?

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

Жаба - по определению тормозная хрень, учи матчасть. Разводить тут споры о рассовом превосходстве традиционного подхода «нормальный язык -> бинарник» перед «язык для быдлокодеров -> байткод -> интерпретатор» я не собираюсь, обсуждали тыщу раз, надоело, нравится вам жаба сидите епрст и наслаждайтесь. ЗЫ я уж молчу о том, что у меня даже JVM ни на одной из пользуюмых/обслуживаемых мной машин нету, за абсолютной ненадобстою каких бы то нибыло решений на так любой некоторыми жабе. А вот предлагать на каждом шагу, кто бы чего не хотел написать свою жабу не надо. Я же не лезу в треды с обсуждением как что-то сделать на жабе с советами юзать плюсы или D.

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

А много вы их знаете на жабе? У меня почему-то почти все серверные приложения написаны на С, есть кое-что сделанное для своих нужд на C++/Qt.

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

Ладно я поставлю вопрос по другому. Почему я обслуживая стопку машин прекрасно обхожусь даже без JVM, уж молчу о наличии программа на жабе?! А вот без gcc/g++, никак?! VМоже таки это Вы преувеличиваете значение жабы для данного направления. Как ни крути C был, есть и ещё долго будет главным языком для серверного ПО.

erfea ★★★★★
()

Значит так.

1. Берешь qt
2. компиляешь arora
3. запускаешь
4. Валишь читать маны по erlang
???
6. PROFIT!

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

> ссылку на какой-нибудь insight-it что ли привести?

Приведи. Увидишь, что рядом с жабой в большинстве случаев используются плюсы.

reader
()
Ответ на: комментарий от erfea

>языком для серверного ПО.
в данном случае речь идёт не об абстрактном «серверном ПО», а о конкретном самописном stateless сервере, который легко и непринуждённо пишется поверх NIO с помощью MINA или там Netty

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

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

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

не читал после фразы о рассовом превосходстве генератора сегфолтов над оптимальным соотношением производительности и продуктивности труда

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

Это был ответ на вопрос о серверных приложениях на плюсах, а не аргумент в пользу того, что Java тормозит и «не нужна».

reader
()
Ответ на: комментарий от erfea

>Вот только давай не будем

Вот только не надо. Любые «крутые корпоративные решения» — порнография. Исключительно из-за их громадных пространственных и *временнЫх* размеров. И уж кто-кто, а JVM в решении этих вопросов продвинулась дальше всех.

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