Size: a a a

2020 July 20

RR

Ramil Rizvanov in Qt
Апельсин
Михаил, всетаки этот глупый вопрос не дает мне покоя(в интернете разные мнения): где используют классы QTcpServer , QTcpSocket, если они не выдерживают высоких нагрузок? Кто-то пишет что на них можно высоконагруженный сервер писать, кто-то говорит что нет
только в отдельном потоке и возможно вообще отдельный event loop
источник

А

Апельсин in Qt
Ramil Rizvanov
только в отдельном потоке и возможно вообще отдельный event loop
Тоже так думаю. На каждое соединение отдельный поток, правильно?
источник

RR

Ramil Rizvanov in Qt
на каждый клиент я бы даже сказал
источник

МС

Михаил Серебренников... in Qt
Мы тут общались с @geshep и он привёл статью с отличным примером нагрузок, которые держат QTcpServer. https://m.habr.com/ru/post/263549/ - смотреть комментарии. Если коротко, то Qt из моей практики держит нагрузку на порядок меньше, чем Libevent  и др.
Но, на мой взгляд, его использование вполне оправдано для небольших сетей, вроде умного дома или коммерческой сети.
источник

А

Апельсин in Qt
Ramil Rizvanov
на каждый клиент я бы даже сказал
Именно так)
источник

МС

Михаил Серебренников... in Qt
Апельсин
Тоже так думаю. На каждое соединение отдельный поток, правильно?
На каждое соединение нельзя делать отдельный поток. Это сильно повышает нагрузку. Количество потоков должно быть ограничено количеством процессора помноженное на два.
источник

RR

Ramil Rizvanov in Qt
Михаил Серебренников
На каждое соединение нельзя делать отдельный поток. Это сильно повышает нагрузку. Количество потоков должно быть ограничено количеством процессора помноженное на два.
это ограничение Qt ?
источник

А

Апельсин in Qt
В один поток нужно обрабатывать,например, сразу 100 клиентов?
источник

GS

Georgy Shepelev in Qt
Ramil Rizvanov
это ограничение Qt ?
это здравый смысл )
источник

МС

Михаил Серебренников... in Qt
Вот, вот. Здравый смысл. )
источник

МС

Михаил Серебренников... in Qt
Почитайте почему nginx в своё время побил apache.
источник

AS

Anatoly Shirokov in Qt
Ramil Rizvanov
это ограничение Qt ?
ты можешь запустить 10 000 потоков на двух ядрах. толк какой?
источник

А

Апельсин in Qt
Anatoly Shirokov
ты можешь запустить 10 000 потоков на двух ядрах. толк какой?
читабельность кода и ошибки с памятью лешче не допустить
источник

МС

Михаил Серебренников... in Qt
Фишка даже не в этом. А в том, что создание потока тяжёлая операция.
источник

МВ

Макс Воробьев... in Qt
Михаил Серебренников
Мы тут общались с @geshep и он привёл статью с отличным примером нагрузок, которые держат QTcpServer. https://m.habr.com/ru/post/263549/ - смотреть комментарии. Если коротко, то Qt из моей практики держит нагрузку на порядок меньше, чем Libevent  и др.
Но, на мой взгляд, его использование вполне оправдано для небольших сетей, вроде умного дома или коммерческой сети.
а есть сравнение для Qt/boost/glib(gio) ?
источник

А

Апельсин in Qt
Апельсин
читабельность кода и ошибки с памятью лешче не допустить
как мне кажется
источник

RG

Renat Garaev in Qt
Михаил Серебренников
Почитайте почему nginx в своё время побил apache.
Ну тут холивар можно же долго вести: бывает и slow attack. Когда данные по инетрнету тянутся медленно. Если у него будет 10000 соединений на поток, то медленные как раз сможет обслужить его сервер, а быстрые уже не сможет и они будут тормозить.
источник

AS

Anatoly Shirokov in Qt
Михаил Серебренников
Фишка даже не в этом. А в том, что создание потока тяжёлая операция.
ну, создание отдельного потока на лету я вообще не рассматриваю. пул дефакто.
источник

МС

Михаил Серебренников... in Qt
Как раз Qt со своим event loop позволяет делать асинхронную обработку запросов и ограничиться количеством потоков, которое поддерживает проц.
источник

RR

Ramil Rizvanov in Qt
Anatoly Shirokov
ну, создание отдельного потока на лету я вообще не рассматриваю. пул дефакто.
поток дает удобство абстракции, например работа с клиентом в веб сервере, уже потом это стало не модно и не эффективно
источник