powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / IdTCPServer отправить сообщение клиенту
16 сообщений из 116, страница 5 из 5
IdTCPServer отправить сообщение клиенту
    #40033586
Kazantsev Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SOFT FOR YOU
Кстати один из членов команды сказал, что такие тесты будут проводиться

Это первое, с чего нужно было начинать - искать причину затыков, если они есть, а не бросаться сразу пилить своё, передовое, в угаре собственных представлений о прекрасном. Потому и цирк.
...
Рейтинг: 0 / 0
IdTCPServer отправить сообщение клиенту
    #40033588
SOFT FOR YOU
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kazantsev Alexey,

Я программирую 20 лет
Весь мой гитхаб утыкан бенчмарками
Ни одна крупная сетевая библиотека не создаёт поток на каждое соединение
Что тебе не хватает?
...
Рейтинг: 0 / 0
IdTCPServer отправить сообщение клиенту
    #40033594
Фотография Дегтярев Евгений
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
простите что врываюсь...
может я скептик, но все же...

автор1. На имеющемся серваке растёт количество клиентов, сервак начинает захлёбываться. Нужно добавить асинхронные сокеты...
а как сделали вывод что асинхронщина поможет?
было профилирование, которое показало, что проблема в обработке сети?

автор2. Человек является начальником отдела разработки, много кода на Delphi, очень много клиентов. Есть желание продолжить на Delphi, но подчинённые прислали тест, где Node выигрывает Delphi на порядки
на порядок это 10x, на порядки это 100x и более
возникает резонный вопрос - что в тесте?
это был тест, который копирует текущее поведение системы? с авторизацией, валидацией, с обращениями к другим системам, субд, записью логов и пр.?
или это тест в духе смотри какой крутой в ноде http сервер, как он быстро возвращает "hello word"?
если второй, то да, io-bound задачи это то с чем event loop справляется на ура... в реальных задачах присутствует логика иногда много и она дает нагрузку на cpu, что в однопоточной модели ноды может стать проблемой, надо масштабироваться, что не всегда просто
...
Рейтинг: 0 / 0
IdTCPServer отправить сообщение клиенту
    #40033596
Kazantsev Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SOFT FOR YOU
Что тебе не хватает?

Выдержки, пожалуй. Но я работаю над собой.
...
Рейтинг: 0 / 0
IdTCPServer отправить сообщение клиенту
    #40033597
SOFT FOR YOU
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kazantsev Alexey,

Да
Это всем нужно :)
...
Рейтинг: 0 / 0
IdTCPServer отправить сообщение клиенту
    #40033602
SOFT FOR YOU
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дегтярев Евгений,

Ты ожидаешь, что я тебе расскажу про других людей
Я не знаю, какие тесты делались, какие нет

Асинхронщина сети - это асинхронщина сервера
Есть малое количество ядер, выполняющих полезную работу. И есть огромное количество вещей, которые предстоит им выполнить
Есть огромное количество оверхеда, который накладывается на работу потока. Переключение контекстов, регистрация объектов операционной системы, оркестрация. Наверняка есть много других весомых оверхедов, необходимости в которых просто нет. Те же лишние прерывания, например, раздутое адресное пространство

Другая проблема многопоточного кода - синхронизация. Поэтому особое внимание при разработке серверных приложений уделяется lock-free и wait-free алгоритмам. В крайних случаях пытаются нивелировать количество блокировок. Большая проблема многих сетевых библиотек в том, что не достаточно эффективно используется синхронизация. В примере того же ТС для поиска нужного клиента во-первых, блокируется сразу весь список, а во-вторых происходит линейный поиск

Самый интересный момент серверных приложений и сетевых библиотек в частности - менеджмент памяти. Дело в том, что обычно каждое обращение к менеджеру памяти приводит к блокировке, о которой только что говорил. Есть менеджеры с минимальным количеством блокировок, оптимизация происходит за счёт локальной кучи, ассоциированной с потоком. Поэтому многопоточные приложения со ScaleMM2, например, показывают значительно более интересные результаты, нежели с FastMM. Но есть ещё более эффективные подходы к работе с памятью через буферы и/или стек. Большое количество наработок в этом направлении у меня кстати уже сделано
...
Рейтинг: 0 / 0
IdTCPServer отправить сообщение клиенту
    #40033648
Фотография Дегтярев Евгений
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SOFT FOR YOU,

авторАсинхронщина сети - это асинхронщина сервера
необязательно

авторЕсть малое количество ядер, выполняющих полезную работу. И есть огромное количество вещей, которые предстоит им выполнить Есть огромное количество оверхеда, который накладывается на работу потока. Переключение контекстов, регистрация объектов операционной системы, оркестрация. Наверняка есть много других весомых оверхедов, необходимости в которых просто нет. Те же лишние прерывания, например, раздутое адресное пространство
еще раз, оно оправдано для io-bound задач, где вышеописанный оверхед больше чем обработка очередного пакета
действительно ли борьба идет с проблемой, которая имеет место быть?

все что написано про блокировки и менеджеры памяти справедливо и для не асинхронного кода

вот поэтому мне не понятна мотивация людей, у которых проблемы с существующим кодом (не nginx же они свой пишут)
потому и спросил про профилирование, именно оно может показать проблемы и места для приложения усилий
когда сервер не держит нагрузку, наряду с поиском способов оптимизации, я бы уже смотрел в сторону масштабирования, т.к. эффект от оптимизации не бесконечен
...
Рейтинг: 0 / 0
IdTCPServer отправить сообщение клиенту
    #40033655
SOFT FOR YOU
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дегтярев Евгений,

Я конечно люблю беседы, но честно говоря не очень понимаю, что ты спрашиваешь
У всех своя мотивация. Я её перечислил
Конкретно я планировал сотрудничать с крупными компаниями, занимающимися разработкой серверных приложений на Delphi. Я знаю их внутренние сложности и планировалось придти к ним с готовыми эффективными решениями. Для этого хотелось взять готовую сетевую библиотеку и поверх неё запилить сериализацию под разные форматы и дополнительные утилитарные механизмы типа утентификации или автоматического перехода от сети к пайпам/расшареной памяти при возможности

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

Если пилить сетевую библиотеку, то она должна быть конкурентноспособна. Не только с дельфийскими решениями, но и с нодой, например
Поскольку я фанат оптимизаций, подобная задача для меня представляет интерес, есть наработки, есть желание дальше развиваться в этой сфере
Получится или нет в итоге - зависит от множества факторов. Все самые крутые вещи делаются командой. Оптимизация хоть и моя сильная сторона, но есть огромное количество областей, в которых я слаб. Кроме того в командной работе присутствует эффект синергии, что невероятно важно. Получится/нет - увидим

Если ответил - ок
Если нет - извини )
Но вообще говоря, на мой взгляд это переливание из пустого в порожнее
Мне нравится тратить время на более конструктивные вещи и на людей, которые не столько говорят, сколько делают. Сказано немало. Кому интересна тема - стучитесь в личку - всегда можно придумать, каким образом быть полезным
...
Рейтинг: 0 / 0
IdTCPServer отправить сообщение клиенту
    #40033692
Фотография Дегтярев Евгений
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторПоэтому я погуглил самые ходовые сетевые библиотеки, стал изучать и пришёл к выводу, что в каждой есть серьёзные недостатки.
я бы даже сказал фатальные ))


про то что надо заткнет всех

нода (1 core)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
$ wrk -c 32 -t 4 -d 20s  http://localhost:8081/ 
Running 20s test @  http://localhost:8081/ 
  4 threads and 32 connections
  Thread Stats   Avg      Stdev     Max   ± Stdev
    Latency   813.96us  598.13us  32.96ms   99.10%
    Req/Sec    10.18k     0.97k   12.60k    97.14%
  813681 requests in 20.10s, 119.50MB read
Requests/sec:  40482.46
Transfer/sec:      5.95MB 

другое решение (1 core)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
$ wrk -c 32 -t 4 -d 20s  http://localhost:8080/ 
Running 20s test @  http://localhost:8080/ 
  4 threads and 32 connections
  Thread Stats   Avg      Stdev     Max   ± Stdev
    Latency   396.11us  222.41us   5.54ms   60.02%
    Req/Sec    20.37k     1.21k   27.52k    86.80%
  1627231 requests in 20.10s, 200.19MB read
Requests/sec:  80958.82
Transfer/sec:      9.96MB 
...
Рейтинг: 0 / 0
IdTCPServer отправить сообщение клиенту
    #40034833
Fr0sT-Brutal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А TLS тоже сами будете делать?)) а то ж все эти rps попугаи при наличии хендшейка сразу становятся очень грустными
...
Рейтинг: 0 / 0
IdTCPServer отправить сообщение клиенту
    #40035008
Фотография Дегтярев Евгений
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Fr0sT-Brutal,

к кому вопрос был?
...
Рейтинг: 0 / 0
IdTCPServer отправить сообщение клиенту
    #40035014
Fr0sT-Brutal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Дегтярев Евгений
к кому вопрос был?

К soft4u. Правда, его забанили почему-то
...
Рейтинг: 0 / 0
IdTCPServer отправить сообщение клиенту
    #40035183
bk0010
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Fr0sT-Brutal
К soft4u. Правда, его забанили почему-то
Тут это его постоянное состояние.
...
Рейтинг: 0 / 0
IdTCPServer отправить сообщение клиенту
    #40035251
энди
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bk0010
Fr0sT-Brutal
К soft4u. Правда, его забанили почему-то
Тут это его постоянное состояние.


да и не только тут :)
...
Рейтинг: 0 / 0
IdTCPServer отправить сообщение клиенту
    #40035368
Фотография Дегтярев Евгений
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
по поводу TLS
а так ли это необходимо внутри сервиса?
...
Рейтинг: 0 / 0
IdTCPServer отправить сообщение клиенту
    #40035371
Kazantsev Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дегтярев Евгений,

+1

На прикладном уровне можно значительно меньшими усилиями решить проблему безопасных коммуникаций, не свзываяь со всех этой инфраструктурной жутью.
...
Рейтинг: 0 / 0
16 сообщений из 116, страница 5 из 5
Форумы / Delphi [игнор отключен] [закрыт для гостей] / IdTCPServer отправить сообщение клиенту
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]