powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / IdTCPServer отправить сообщение клиенту
116 сообщений из 116, показаны все 5 страниц
IdTCPServer отправить сообщение клиенту
    #40033174
Mizer73
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть IdTCPServer.
Нужно отправить сообщение конкретному клиенту из списка подключённых.
Есть его IP адрес и порт.

Как?
...
Рейтинг: 0 / 0
IdTCPServer отправить сообщение клиенту
    #40033179
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Mizer73,
никак. Клиент должен прислать запрос.
Меняй технологию.
...
Рейтинг: 0 / 0
IdTCPServer отправить сообщение клиенту
    #40033183
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mizer73Как?

Ищешь его в Threads, вызываешь Connection->WriteBuffer.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
IdTCPServer отправить сообщение клиенту
    #40033222
Mizer73
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov

Mizer73Как?

Ищешь его в Threads, вызываешь Connection->WriteBuffer.


вопросов меньше не стало, хотя понятно, куда копать
...
Рейтинг: 0 / 0
IdTCPServer отправить сообщение клиенту
    #40033224
Фотография Dmitry Arefiev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
* клиент шлет запрос
* ... сервер его получает и блокирует клиента
* когда происходит нужное событие на сервере
* ... сервер шлет ответ клиенту
...
Рейтинг: 0 / 0
IdTCPServer отправить сообщение клиенту
    #40033225
Mizer73
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dmitry Arefiev, не подходит. Клиент шлет разные данные онлайн. И на эти данные надо среагировать
...
Рейтинг: 0 / 0
IdTCPServer отправить сообщение клиенту
    #40033226
Mizer73
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov

Mizer73Как?

Ищешь его в Threads, вызываешь Connection->WriteBuffer.


а через перебор
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
TList *ClientsList = IdTCPServer1->Contexts->LockList();
		try {
			for (int i = 0; i < ClientsList->Count; i++) {
			 //   Server.Threads[].Connection.Socket чем-то не устраивает?

				MyContext = (TIdContext*) ClientsList->Items[i];
				MyContext->Connection->IOHandler->WriteLn("Message for all the clients");
			}
			__finally {
				IdTCPServer1->Contexts->UnlockList();
			}
		}


не найти?
...
Рейтинг: 0 / 0
IdTCPServer отправить сообщение клиенту
    #40033243
Фотография Dmitry Arefiev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mizer73
Dmitry Arefiev, не подходит. Клиент шлет разные данные онлайн. И на эти данные надо среагировать

и ?
...
Рейтинг: 0 / 0
IdTCPServer отправить сообщение клиенту
    #40033244
Mizer73
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dmitry Arefiev
Mizer73
Dmitry Arefiev, не подходит. Клиент шлет разные данные онлайн. И на эти данные надо среагировать

и ?

что значит "блокирует"?
...
Рейтинг: 0 / 0
IdTCPServer отправить сообщение клиенту
    #40033250
Фотография Dmitry Arefiev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Обработчик запроса на сервере вызывает TEvent.WaitFor и ... ждет чего-то там ...
...
Рейтинг: 0 / 0
IdTCPServer отправить сообщение клиенту
    #40033253
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dmitry ArefievОбработчик запроса на сервере вызывает TEvent.WaitFor и ... ждет чего-то там ...

Это совершенно никому не мешает посылать данные в сокет. С любой стороны.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
IdTCPServer отправить сообщение клиенту
    #40033258
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Mizer73,

а тебе обязательно эти инди использовать?
Есть готовые технологие, где асинхронная связь является просто фичей. Например, WebSockets...
...
Рейтинг: 0 / 0
IdTCPServer отправить сообщение клиенту
    #40033260
Mizer73
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov

Dmitry ArefievОбработчик запроса на сервере вызывает TEvent.WaitFor и ... ждет чего-то там ...

Это совершенно никому не мешает посылать данные в сокет. С любой стороны.

но следующий приход данных будет опять создавать ожидание
...
Рейтинг: 0 / 0
IdTCPServer отправить сообщение клиенту
    #40033265
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Mizer73
Dimitry Sibiryakov

пропущено...

Это совершенно никому не мешает посылать данные в сокет. С любой стороны.

но следующий приход данных будет опять создавать ожидание

Посмотри тут: http://flibustahezeous3.onion/b/255517/read#t66 - глава 2, "Сокеты Windows". Только там не глупая инди, а сокеты Windows.
Есть и примеры реализации, в т.ч. и асинхронной связи между клеинтами и сервером.
...
Рейтинг: 0 / 0
IdTCPServer отправить сообщение клиенту
    #40033310
s62
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ъъъъъ,

что за ссылка, не открывается ни просто, ни через VPN. Это не вот это ли вот?
http://www.delphikingdom.com/asp/viewitem.asp?catalogid=1060
...
Рейтинг: 0 / 0
IdTCPServer отправить сообщение клиенту
    #40033312
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
s62,

это ссылка для Tor Browser.
...
Рейтинг: 0 / 0
IdTCPServer отправить сообщение клиенту
    #40033315
s62
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ъъъъъ,

понятно.
...
Рейтинг: 0 / 0
IdTCPServer отправить сообщение клиенту
    #40033316
Mizer73
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Итого, можно через перебор узнавать клиента с требуемым IP и слать ему послание.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
TList *ClientsList = IdTCPServer1->Contexts->LockList();
	try {
		for (int i = 0; i < ClientsList->Count; i++) {
			MyContext = (TIdContext*) ClientsList->Items[i];
			MyContext->Connection->IOHandler->WriteLn("Message for all the clients");
           ......................................
...................



по крайней мере, выборочно отключать получилось. Попробую отсылать сообщение.
...
Рейтинг: 0 / 0
IdTCPServer отправить сообщение клиенту
    #40033318
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Следующий вопрос будет про клиента. :)
...
Рейтинг: 0 / 0
IdTCPServer отправить сообщение клиенту
    #40033319
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Понаворотят обёрток, а потом ищут как делать тривиальные вещи...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
IdTCPServer отправить сообщение клиенту
    #40033333
SOFT FOR YOU
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У нас в комьюнити организовалась группа по интересам
Мы пилим сетевую библиотеку. На примере ТС представьте, что будет если клиентов несколько тысяч
Если у кого-то есть желание поучаствовать - пишите мне в личку
Пока нас 4 человека. Завели проект в гитлабе, юзаем джиру и конфлюенс. Договорились о встречах 3 раза в неделю, микро скрам.
...
Рейтинг: 0 / 0
IdTCPServer отправить сообщение клиенту
    #40033385
DmSer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SOFT FOR YOU
У нас в комьюнити организовалась группа по интересам
Мы пилим сетевую библиотеку. На примере ТС представьте, что будет если клиентов несколько тысяч
Если у кого-то есть желание поучаствовать - пишите мне в личку
Пока нас 4 человека. Завели проект в гитлабе, юзаем джиру и конфлюенс. Договорились о встречах 3 раза в неделю, микро скрам.


Зачем это нужно? Чем имеющиеся не устраивают?
...
Рейтинг: 0 / 0
IdTCPServer отправить сообщение клиенту
    #40033392
Фотография defecator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
DmSer
SOFT FOR YOU
У нас в комьюнити организовалась группа по интересам
Мы пилим сетевую библиотеку. На примере ТС представьте, что будет если клиентов несколько тысяч
Если у кого-то есть желание поучаствовать - пишите мне в личку
Пока нас 4 человека. Завели проект в гитлабе, юзаем джиру и конфлюенс. Договорились о встречах 3 раза в неделю, микро скрам.


Зачем это нужно? Чем имеющиеся не устраивают?


она должна быть супер-мега-быстрая, самая быстрая в мире !
...
Рейтинг: 0 / 0
IdTCPServer отправить сообщение клиенту
    #40033401
DmSer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
defecator
DmSer
пропущено...


Зачем это нужно? Чем имеющиеся не устраивают?


она должна быть супер-мега-быстрая, самая быстрая в мире !


Самые быстрые - только асинхронные. Такие уже есть, например Overbyte ICS.
Несмотря на это, большинство один хрен использует Indy10, ибо проще, кроссплатформенно, не нужно бороться с Callback hell или изобретать машины состояний.
...
Рейтинг: 0 / 0
IdTCPServer отправить сообщение клиенту
    #40033402
SOFT FOR YOU
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DmSer,

Я потратил множество времени, чтобы ознакомиться с текущими решениями
Смотрел и Synopse, и ICS, и TMS, и RTC. И много чего другого
Тот же ICS он только под винду
Асинхронных сокетов нормальных нет почти нигде
С веб сокетами тоже труба
В Indy на каждый коннект создаётся поток. Будет на серваке 1000 соединений и всё - труба

К нам в сообщество пришёл чувак, замерял тест ноды и TCP сервера Delphi
Оказалось, нода в 500 раз быстрее. Что-то типа такого

Для высокоуровневого маршаллинга нет ничего кроме SuperObject
Но он только JSON и далеко не самый быстрый
...
Рейтинг: 0 / 0
IdTCPServer отправить сообщение клиенту
    #40033413
Фотография defecator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
SOFT FOR YOU
DmSer,

Я потратил множество времени, чтобы ознакомиться с текущими решениями
Смотрел и Synopse, и ICS, и TMS, и RTC. И много чего другого
Тот же ICS он только под винду
Асинхронных сокетов нормальных нет почти нигде
С веб сокетами тоже труба
В Indy на каждый коннект создаётся поток. Будет на серваке 1000 соединений и всё - труба


RTC держит сотни тысяч коннектов одновременно
при этом у них в демках есть софтина для стресс-тестирования

и да, иди снова изучай
...
Рейтинг: 0 / 0
IdTCPServer отправить сообщение клиенту
    #40033416
DmSer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тот же ICS он только под винду

Автор вроде пилит кроссплатформу. Не знаю, на каком сейчас этапе.

В Indy на каждый коннект создаётся поток. Будет на серваке 1000 соединений и всё - труба

Неправда. Если мы разрабатываем 64-битное приложение, то Indy может держать десятки тысяч подключений. На каждое подключение создаётся доп. поток, но ОЗУ он жрет не более 100 КБ. К сожалению, максимальное количество подключений на одном (и даже на двух компьютерах) не измеришь. Чтобы измерить, нужно один комп "сервер" и десяток компов-клиентов. Может Indy и 100 тыс. одновременных TCP-коннектов потянет (здесь конечно большие затраты будут на работу системного планировщика).
Но, конечно, скорость обработки http-запросов в Indy значительно меньше, чем у других.

Оказалось, нода в 500 раз быстрее. Что-то типа такого

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

Даже в 32-битном процессе можно создать сильно больше потоков, не говоря уж о 64-битном.

DmSer
(здесь конечно большие затраты будут на работу системного планировщика)

Ожидающие событий от системных объектов потоки на производительность не влияют.

DmSer
Видимо, он сравнивал с Indy. Там очень большие расходы из-за создания и уничтожения доп. потоков. Ну и по другим причинам.

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

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

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

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

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

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


что там тебя удручает ?

есть zeroMQ, который сверхбыстрый, и с прекрасной обёрткой
https://github.com/grijjy/DelphiZeroMQ

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

1. Ожидающим потокам тик не нужен. Они из планирования исключаются.
2. Адресное пространство на 64-битах не проблема, а на 32 оно скорее будет исчерпано под хранение состояния, если, конечно, речь не идёт о примитивном эхо-сервере.
...
Рейтинг: 0 / 0
IdTCPServer отправить сообщение клиенту
    #40033424
SOFT FOR YOU
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
defecator,

ZeroMQ тоже может не всё
Тем более он зависим от динамических библиотек
По поводу производительности...
Ты юзал мой CPF, как сам думаешь?

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

Ну давай сравним 5000 соединений на ноде и 5000 соединений на дельфийских потоках
Создавать поток на каждое соединение - это древность. Не знаю, сейчас кто-то использует этот подход кроме наших или нет
...
Рейтинг: 0 / 0
IdTCPServer отправить сообщение клиенту
    #40033426
Фотография defecator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
SOFT FOR YOU
defecator,

ZeroMQ тоже может не всё


не может всё - это чего же такое это "всё" ?

SOFT FOR YOU

Тем более он зависим от динамических библиотек

любая твоя библиотека всё равно будет зависима от системных библиотек

SOFT FOR YOU

Вопрос не в моих навыках оптимизатора
Вопрос в том, хватит ли мотивации, сил и времени на реализацию
И в этом смысле командная работа как решает данный вопрос
Получится нет - увидим

вопрос - зачем ? оптимизация ради оптимизации ?
или тебе просто нечем больше заняться ?
...
Рейтинг: 0 / 0
IdTCPServer отправить сообщение клиенту
    #40033428
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
авторZeroMQ тоже может не всё
Тем более он зависим от динамических библиотек
Дайте ему селёдки! - (с).
...
Рейтинг: 0 / 0
IdTCPServer отправить сообщение клиенту
    #40033429
SOFT FOR YOU
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
defecator,

Очень хороший вопрос
Если говорить про сейчас, то у нас 4 человека (как будет дальше - посмотрим). Мотивации следующие:
1. На имеющемся серваке растёт количество клиентов, сервак начинает захлёбываться. Нужно добавить асинхронные сокеты + добавить поддержку REST/JSON (через http.sys)
2. Человек является начальником отдела разработки, много кода на Delphi, очень много клиентов. Есть желание продолжить на Delphi, но подчинённые прислали тест, где Node выигрывает Delphi на порядки
3. Интерес в профессиональном росте: погружение в сетевые технологии, инструменты и особенности командной разработки
4. У меня есть 2 потенциальных клиента (компании), которые активно пишут сервера на Delphi. Мне хотелось бы сотрудничать с ними, но предложить пока нечего
...
Рейтинг: 0 / 0
IdTCPServer отправить сообщение клиенту
    #40033430
Kazantsev Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SOFT FOR YOU
Ну давай сравним...

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

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

Очень хороший вопрос
Если говорить про сейчас, то у нас 4 человека (как будет дальше - посмотрим). Мотивации следующие:
1. На имеющемся серваке растёт количество клиентов, сервак начинает захлёбываться. Нужно добавить асинхронные сокеты + добавить поддержку REST/JSON (через http.sys)
2. Человек является начальником отдела разработки, много кода на Delphi, очень много клиентов. Есть желание продолжить на Delphi, но подчинённые прислали тест, где Node выигрывает Delphi на порядки
3. Интерес в профессиональном росте: погружение в сетевые технологии, инструменты и особенности командной разработки
4. У меня есть 2 потенциальных клиента (компании), которые активно пишут сервера на Delphi. Мне хотелось бы сотрудничать с ними, но предложить пока нечего
Много клиентов - можно использовать порты завершения, IO Completion Ports. Пишут, что эффективная вещь.
...
Рейтинг: 0 / 0
IdTCPServer отправить сообщение клиенту
    #40033435
Kazantsev Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SOFT FOR YOU
Ну не я же говорю, что потоки это не проблема

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

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

Совершенно верно
IOCP под виндой
epoll на Linux
kqueue на FreeBSD/MacOS
...
Рейтинг: 0 / 0
IdTCPServer отправить сообщение клиенту
    #40033443
Kazantsev Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SOFT FOR YOU
Не понял, к чему злорадство

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

Заваливайся в сообщество
Там такие темы, например, обсуждать сподручнее
...
Рейтинг: 0 / 0
IdTCPServer отправить сообщение клиенту
    #40033445
Фотография defecator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
SOFT FOR YOU
Kazantsev Alexey,

Заваливайся в сообщество
Там такие темы, например, обсуждать сподручнее

а здесь ТАКИЕ темы обсуждать "несподручнее" ?
...
Рейтинг: 0 / 0
IdTCPServer отправить сообщение клиенту
    #40033446
Фотография defecator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
SOFT FOR YOU

4. У меня есть 2 потенциальных клиента (компании), которые активно пишут сервера на Delphi. Мне хотелось бы сотрудничать с ними, но предложить пока нечего


если они активно пишут сервера на Дельфи, то нафига им нужен ты ?
...
Рейтинг: 0 / 0
IdTCPServer отправить сообщение клиенту
    #40033448
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SOFT FOR YOU
Kazantsev Alexey,

Заваливайся в сообщество
Там такие темы, например, обсуждать сподручнее

Категорически не советую:
SOFT FOR (конкретно) - не просто токсичный пустозвон, он - опасен как партнёр. Например, напомню, что его "знаменитый" фри-опенсорсе менеджер памяти ... неожиданно заброшен с требованием заплатить ему $5000-$10000.
...
Рейтинг: 0 / 0
IdTCPServer отправить сообщение клиенту
    #40033449
SOFT FOR YOU
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
defecator,

Конкретно в данный момент тема является офтопом
ТС спросил об одном, а речь о потоках и библиотеках

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

Телега не нужна.
...
Рейтинг: 0 / 0
IdTCPServer отправить сообщение клиенту
    #40033451
Фотография defecator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
SOFT FOR YOU
defecator,

Конкретно в данный момент тема является офтопом
ТС спросил об одном, а речь о потоках и библиотеках

Сервера - это большая нагрузка
А большая нагрузка - это тонна оптимизаций
Плюс у меня много наработок по RTTI. А значит с лёгкой руки можно упростить обмен сообщениями между клиентом и сервером. Упростить, ускорить, повысить надёжность и обратную совместимость


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

Партнёрство, это не когда 1 пилит, а другой юзает
Партнёрство это когда оба пилят, либо один пилит, а другой платит. Вот ты сколько заплатил, чтобы такое орать? )

P.S. я кстати всё лето фигачил новую версию менеджера на Си
На данный момент процесс застопорился потому, что не могу найти WordPress-ника, который сможет наладить платную подписку на сайте. И тестового фреймворка пока нет, чтобы не обращался к менеджеру. Так что если кто может чем-то помочь (запартнёриться) - тоже жду в личке!
...
Рейтинг: 0 / 0
IdTCPServer отправить сообщение клиенту
    #40033454
Фотография defecator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
SOFT FOR YOU
ъъъъъ,

Партнёрство, это не когда 1 пилит, а другой юзает
Партнёрство это когда оба пилят, либо один пилит, а другой платит. Вот ты сколько заплатил, чтобы такое орать?


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

Ты рассуждаешь простыми категориями
Где простой бизнес-процесс и не так много клиентов
Там основная оптимизация - это добавление пары индексов и закупка немного оперативной памяти

Когда проекты действительно большие, когда клиентов тысячи, а производительность оседает в микросервисах, работающих с кешем данных - тогда сложности совершенно другие
Производительность - весомая задача, но не единственная из весомых
И речь не о серверных приложениях в Delphi. Это касается любых языков программирования
Просто многие языки уже обзавелись хорошими библиотеками
...
Рейтинг: 0 / 0
IdTCPServer отправить сообщение клиенту
    #40033456
Фотография defecator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
SOFT FOR YOU
defecator,

Ты рассуждаешь простыми категориями
Где простой бизнес-процесс и не так много клиентов
Там основная оптимизация - это добавление пары индексов и закупка немного оперативной памяти

Когда проекты действительно большие, когда клиентов тысячи, а производительность оседает в микросервисах, работающих с кешем данных - тогда сложности совершенно другие
Производительность - весомая задача, но единственная из весомых
И речь не о серверных приложениях в Delphi. Это касается любых языков программирования
Просто многие языки уже обзавелись хорошими библиотеками


в Дельфи тоже полно отличных высокоскоростных сетевых библиотек - RTC и ZeroMQ тому примеры
...
Рейтинг: 0 / 0
IdTCPServer отправить сообщение клиенту
    #40033457
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
defecator
SOFT FOR YOU
defecator,

Ты рассуждаешь простыми категориями
Где простой бизнес-процесс и не так много клиентов
Там основная оптимизация - это добавление пары индексов и закупка немного оперативной памяти

Когда проекты действительно большие, когда клиентов тысячи, а производительность оседает в микросервисах, работающих с кешем данных - тогда сложности совершенно другие
Производительность - весомая задача, но единственная из весомых
И речь не о серверных приложениях в Delphi. Это касается любых языков программирования
Просто многие языки уже обзавелись хорошими библиотеками


в Дельфи тоже полно отличных высокоскоростных сетевых библиотек - RTC и ZeroMQ тому примеры

RTC - чисто дельфийская библиотека, а zmq - хотя и бесплатная, но лишь дейфийские оболочки над сишным ядром (dll или obj). Функционал и возможности довольно близки)вывод по результатам моих верхоглядных оценок). Я бы, наверное, для своих задач выбрал RTC (функционал именно в нужной мне части богаче), если бы давным-давно не юзал zmq. :)

К zmq "прилагаются" интересные книги и статьи, которые, хоть и опираются на zmq, рассматривают общие принципы разработки и построения высокопроизводительных распределенных систем, и нигде не решаются "проблемы", плавающие в мутни воспалённого мозга пустозвона - "оптимизатора".
...
Рейтинг: 0 / 0
IdTCPServer отправить сообщение клиенту
    #40033458
DmSer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Во всех популярных ЯП появилось асинхронное программирование (на основе async / await или наподобие). Это полностью устранило проблему высокой сложности разработки серверов на асинхронных алгоритмах. В Delphi такого механизма на уровне языка пока нет. Поэтому юзаем Indy. Очередная асинхронная сетевая либа не спасёт.
...
Рейтинг: 0 / 0
IdTCPServer отправить сообщение клиенту
    #40033459
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ъъъъъ
defecator
пропущено...


в Дельфи тоже полно отличных высокоскоростных сетевых библиотек - RTC и ZeroMQ тому примеры

RTC - чисто дельфийская библиотека, а zmq - хотя и бесплатная, но лишь дейфийские оболочки над сишным ядром (dll или obj). Функционал и возможности довольно близки)вывод по результатам моих верхоглядных оценок). Я бы, наверное, для своих задач выбрал RTC (функционал именно в нужной мне части богаче), если бы давным-давно не юзал zmq. :)

К zmq "прилагаются" интересные книги и статьи, которые, хоть и опираются на zmq, рассматривают общие принципы разработки и построения высокопроизводительных распределенных систем, и нигде не решаются "проблемы", плавающие в мутни воспалённого мозга пустозвона - "оптимизатора".

Задачи сетевых оптимизаций решаются всегда алгоримами обмена и выбором топологий, а вовсе не в "оптимизаци кода микросервисов".
...
Рейтинг: 0 / 0
IdTCPServer отправить сообщение клиенту
    #40033460
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ъъъъъ
ъъъъъ
пропущено...

RTC - чисто дельфийская библиотека, а zmq - хотя и бесплатная, но лишь дейфийские оболочки над сишным ядром (dll или obj). Функционал и возможности довольно близки)вывод по результатам моих верхоглядных оценок). Я бы, наверное, для своих задач выбрал RTC (функционал именно в нужной мне части богаче), если бы давным-давно не юзал zmq. :)

К zmq "прилагаются" интересные книги и статьи, которые, хоть и опираются на zmq, рассматривают общие принципы разработки и построения высокопроизводительных распределенных систем, и нигде не решаются "проблемы", плавающие в мутни воспалённого мозга пустозвона - "оптимизатора".

Задачи сетевых оптимизаций решаются всегда алгоримами обмена и выбором топологий, а вовсе не в "оптимизаци кода микросервисов".

Хотя, как-то было дело... :)
Отлаживал алгоритм протокола загрузки файлов из хранилища mega.nz ... на питоне. Вымораживала постоянная задержка, что только не пытался... оказалось, что это питон "в чистом виде" такой плавный... (выполнялось дешифрование данных на лету) :)
...
Рейтинг: 0 / 0
IdTCPServer отправить сообщение клиенту
    #40033473
DmSer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DmSer
(здесь конечно большие затраты будут на работу системного планировщика)

Ожидающие событий от системных объектов потоки на производительность не влияют.

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

Насколько я помню, используются разные списки потоков.
...
Рейтинг: 0 / 0
IdTCPServer отправить сообщение клиенту
    #40033476
asutp2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DmSer
Во всех популярных ЯП появилось асинхронное программирование (на основе async / await или наподобие). Это полностью устранило проблему высокой сложности разработки серверов на асинхронных алгоритмах. В Delphi такого механизма на уровне языка пока нет. Поэтому юзаем Indy. Очередная асинхронная сетевая либа не спасёт.
А чем тебя не устраивает текущие возможности делфи? Что, разве делфи не позволяет использовать "асинхронное программирование"? Или ты так сильно страдаешь от того, что не можешь писать асинхронный код в стиле синхронного?
Вот честно ничего не понял.

И Indy не единственная библиотека, с помощью которой можно делать сетевые сервисы. Вот специально для тебя пример описания создания в делфи высокоскоростного UDP сервера на виндах и линуксе
...
Рейтинг: 0 / 0
IdTCPServer отправить сообщение клиенту
    #40033483
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DmSer
Во всех популярных ЯП появилось асинхронное программирование (на основе async / await или наподобие). Это полностью устранило проблему высокой сложности разработки серверов на асинхронных алгоритмах. В Delphi такого механизма на уровне языка пока нет. Поэтому юзаем Indy. Очередная асинхронная сетевая либа не спасёт.
System.Threading не предлагать?
...
Рейтинг: 0 / 0
IdTCPServer отправить сообщение клиенту
    #40033485
SOFT FOR YOU
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DmSer
Во всех популярных ЯП появилось асинхронное программирование (на основе async / await или наподобие). Это полностью устранило проблему высокой сложности разработки серверов на асинхронных алгоритмах. В Delphi такого механизма на уровне языка пока нет. Поэтому юзаем Indy. Очередная асинхронная сетевая либа не спасёт.


Мне кажется, здесь смешались кони и люди
Если ты подразумеваешь концепцию задач - то она как раз есть в Delphi. Может быть там не всё идеально по производительности, но с заложенной функциональностью справляется, и юзать удобно. Там пул потоков, список задач, замыкания (анонимки).

Если говорить про сетевой буст (IOCP/epoll/kqueue, http.sys и др.) - то они в Delphi худо-бедно, но тоже есть.

Если говорить про высокую нагрузку, то неплохие решения от TMS и RTC
Но Node их всё равно сделает, причём в разы. К тому же придётся заплатить бабла
Я же хочу сделать бесплатно и примерно на уровне
В теории, с учетом особенности менеджера в ноде, можно и быстрее. Но меня сейчас опять заклюют, типа я говорю о неосуществимых вещах )
...
Рейтинг: 0 / 0
IdTCPServer отправить сообщение клиенту
    #40033488
Фотография defecator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
SOFT FOR YOU
DmSer
Во всех популярных ЯП появилось асинхронное программирование (на основе async / await или наподобие). Это полностью устранило проблему высокой сложности разработки серверов на асинхронных алгоритмах. В Delphi такого механизма на уровне языка пока нет. Поэтому юзаем Indy. Очередная асинхронная сетевая либа не спасёт.


Мне кажется, здесь смешались кони и люди
Если ты подразумеваешь концепцию задач - то она как раз есть в Delphi. Может быть там не всё идеально по производительности, но с заложенной функциональностью справляется, и юзать удобно. Там пул потоков, список задач, замыкания (анонимки).

Если говорить про сетевой буст (IOCP/epoll/kqueue, http.sys и др.) - то они в Delphi худо-бедно, но тоже есть.

Если говорить про высокую нагрузку, то неплохие решения от TMS и RTC
Но Node их всё равно сделает, причём в разы. К тому же придётся заплатить бабла
Я же хочу сделать бесплатно и примерно на уровне
В теории, с учетом особенности менеджера в ноде, можно и быстрее. Но меня сейчас опять заклюют, типа я говорю о неосуществимых вещах )


почему заклюют ?
Ждём супер-быструю библиотеку, и если она будет ещё и самая быстрая в мире - почему бы и нет ?
...
Рейтинг: 0 / 0
IdTCPServer отправить сообщение клиенту
    #40033490
SOFT FOR YOU
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
defecator,

Другой разговор
А я жду, что вы не только будете ждать
Но и участвовать как-то

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

Насколько я помню, используются разные списки потоков.


Это касается только потоков, готовых к немедленному выполнению (ready-потоки). Таких обычно немного. Это те потоки, у которых закончился таймаут ожидания, или которые ожидали на объекте синхронизации ядра и были разбужены (например при вызове SetEvent или ReleaseMutex из другого потока). Такие потоки заранее помещаются планировщиком в очередь для какого-то ядра, поэтому дальнейшая процедура их пробуждения очень проста и действительно не зависит от количества других потоков.

Остальные потоки (спящие) в ready-очереди не помещаются, но планировщик при каждом срабатывании системного таймера анализирует по ним информацию (как минимум, проверяет, не закончился ли sleep-интервал).
...
Рейтинг: 0 / 0
IdTCPServer отправить сообщение клиенту
    #40033495
Фотография defecator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
SOFT FOR YOU
defecator,

Другой разговор
А я жду, что вы не только будете ждать
Но и участвовать как-то

Ну не конкретно ты
А вообще люди, которым интересна тема


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

Совершенно верно
У нас 4 человека
Я описал мотивацию каждого из них. Вполне конкретно
...
Рейтинг: 0 / 0
IdTCPServer отправить сообщение клиенту
    #40033497
Фотография defecator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
SOFT FOR YOU
defecator,

Совершенно верно
У нас 4 человека
Я описал мотивацию каждого из них. Вполне конкретно

ага, что ты решил потренироваться в эджайле и командной разработке
...
Рейтинг: 0 / 0
IdTCPServer отправить сообщение клиенту
    #40033498
DmSer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asutp2
DmSer
Во всех популярных ЯП появилось асинхронное программирование (на основе async / await или наподобие). Это полностью устранило проблему высокой сложности разработки серверов на асинхронных алгоритмах. В Delphi такого механизма на уровне языка пока нет. Поэтому юзаем Indy. Очередная асинхронная сетевая либа не спасёт.
А чем тебя не устраивает текущие возможности делфи? Что, разве делфи не позволяет использовать "асинхронное программирование"? Или ты так сильно страдаешь от того, что не можешь писать асинхронный код в стиле синхронного?
Вот честно ничего не понял.

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


Лично мне пока хватало возможностей Indy. У меня не было необходимости решать задачу обслуживания 10000 http-запросов в секунду. Я считаю, что возможности "писать асинхронный код в стиле синхронного" не хватает. Но я понимаю, что в Delphi этой возможности никогда и не будет, поскольку если её реализуют, будет только хуже (кучу всего поломают в угоду задач, которые на Delphi решаются очень редко).

Имеющиеся библиотеки для Delphi позволяют писать асинхронный код в стиле промайзов из JavaScript (например, OTL с его функциями async и await). Но промайзы в чистом виде в JS сейчас никто не использует, т.к. появился async / await, который гораздо нагляднее, в синхронном стиле, и не приводит к callback hell. Это при том, что в JS нет многопоточности. Всё работает в рамках одного потока!
...
Рейтинг: 0 / 0
IdTCPServer отправить сообщение клиенту
    #40033500
SOFT FOR YOU
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
defecator,

Я практикуюсь в эджайле и командной разработке у себя на работе - у меня роль Скрам Мастера
Нафига ты набрасываешь - не понятно
...
Рейтинг: 0 / 0
IdTCPServer отправить сообщение клиенту
    #40033501
Фотография defecator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
SOFT FOR YOU
defecator,

Я практикуюсь в эджайле и командной разработке у себя на работе - у меня роль Скрам Мастера
Нафига ты набрасываешь - не понятно

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

Многопоточность в JS есть, просто она сильно спрятана
Никто не мешает похожий подход использовать и в Delphi
...
Рейтинг: 0 / 0
IdTCPServer отправить сообщение клиенту
    #40033513
DmSer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SOFT FOR YOU
DmSer,

Многопоточность в JS есть, просто она сильно спрятана
Никто не мешает похожий подход использовать и в Delphi


Похожий на что? На промайзы или на async/await ?
...
Рейтинг: 0 / 0
IdTCPServer отправить сообщение клиенту
    #40033515
Kazantsev Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DmSer
Это те потоки, у которых закончился таймаут ожидания, или которые ожидали на объекте синхронизации ядра и были разбужены (например при вызове SetEvent или ReleaseMutex из другого потока).

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


Бесплатный мормот делает ноду . Это было семь лет назад. В комментах трех, угар и содомия, но почитать стоит.
...
Рейтинг: 0 / 0
IdTCPServer отправить сообщение клиенту
    #40033520
Фотография defecator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Kazantsev Alexey
SOFT FOR YOU
Но Node их всё равно сделает, причём в разы. К тому же придётся заплатить бабла


Бесплатный мормот делает ноду . Это было семь лет назад. В комментах трех, угар и содомия, но почитать стоит.

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

Думаешь за 7 лет ноду не оптимизировали
Но инфа огонь
Было бы интересно проверить на текущих версиях
...
Рейтинг: 0 / 0
IdTCPServer отправить сообщение клиенту
    #40033524
SOFT FOR YOU
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DmSer
SOFT FOR YOU
DmSer,

Многопоточность в JS есть, просто она сильно спрятана
Никто не мешает похожий подход использовать и в Delphi


Похожий на что? На промайзы или на async/await ?


Я конечно могу быть неточен
Но по-моему, всё это рутина вокруг задач (тасков)
...
Рейтинг: 0 / 0
IdTCPServer отправить сообщение клиенту
    #40033526
Kazantsev Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SOFT FOR YOU
Но инфа огонь

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

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

Чего там парсить:
Conclusion:
– when using indy + threadpool + scalemm2, the same high throughput as node can be achived! (12000/s).

При использовании инди с тредпулом и менеджером памяти, который умеет в потоки, достигается та же производительность, что и у ноды.
...
Рейтинг: 0 / 0
IdTCPServer отправить сообщение клиенту
    #40033532
Фотография Dmitry Arefiev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SOFT FOR YOU
что менеджмент памяти на высоконапряженных приложений - это один из ключевых факторов, влияющих на производительность

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

Во-первых, я не понимаю, чего ты уцепился в потоки на каждого клиента. Очевидно, что это бесперспективный путь
Во-вторых, я не знаю, что значит Indy + ThreadPool. То есть они научились использовать задачи вместо потоков? Кстати ScaleMM2 жрет очень много системной памяти
В-третьих, это было 7 лет назад. Надо тестировать сегодня

Главное. Что ты имеешь против телеги? )
...
Рейтинг: 0 / 0
IdTCPServer отправить сообщение клиенту
    #40033547
SOFT FOR YOU
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dmitry Arefiev,

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

Этот бесперспективный путь работает не хуже перспективного.

SOFT FOR YOU
Во-вторых, я не знаю, что значит Indy + ThreadPool. То есть они научились использовать задачи вместо потоков?

Нет, пул это не таски, это просто пул. Инди в него умеет с бородатых времён.

SOFT FOR YOU
Кстати ScaleMM2 жрет очень много системной памяти

Во-первых, он не единственный, кто умеет в потоки. Во-вторых, плевать.

SOFT FOR YOU
В-третьих, это было 7 лет назад. Надо тестировать сегодня

Тестируй. Можете вместе с начальником отдела разработки.

SOFT FOR YOU
Главное. Что ты имеешь против телеги? )

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

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

Кому надо, тот берёт и тестирует.
...
Рейтинг: 0 / 0
IdTCPServer отправить сообщение клиенту
    #40033559
DmSer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kazantsev Alexey


Бесплатный мормот делает ноду . Это было семь лет назад. В комментах трех, угар и содомия, но почитать стоит.


А сейчас разработчик мормота выпустил свой супер быстрый и реально работающий менеджер памяти, который, скорее всего, не оставит ноде никаких шансов. Нода все-таки - тяжёлый JS, жрёт память вагонами. Хотя в простейших ситуациях может демонстрировать чудеса скорости (если мерять количеством http-запросов в секунду).
...
Рейтинг: 0 / 0
IdTCPServer отправить сообщение клиенту
    #40033560
DmSer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kazantsev Alexey
SOFT FOR YOU
Честно говоря, не особо распарсил

Чего там парсить:
Conclusion:
– when using indy + threadpool + scalemm2, the same high throughput as node can be achived! (12000/s).


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

Я несколько лет назад пытался использовать threadpool в Indy10, однако столкнулся с тем, что работает это очень нестабильно. Реально кто-нибудь использует Indy10 с тредпулом ? В инете чрезвычайно мало информации на эту тему!
...
Рейтинг: 0 / 0
IdTCPServer отправить сообщение клиенту
    #40033561
SOFT FOR YOU
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kazantsev Alexey,

Меня многие убеждали, что файловая система в современных операционных системах умно управляется с менеджментом и кешированием в ОЗУ, а значит, никаких кеш-буферов не нужно. Я проверил и получил превосходство в 1562 раза
К чему я это говорю. Есть некие базовые принципы, которые закладываются в архитектуру, которые существенно влияют на производительность. Почему-то ты уверен, что создание 100500 потоков это эквивалентный путь. Ну дай бог, считай. Но мне не интересно тратить время на такие тесты )
...
Рейтинг: 0 / 0
IdTCPServer отправить сообщение клиенту
    #40033562
DmSer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нода - всё-таки - не для высоконагруженных серверов! Это шанс разрабатывать бэкенд JS-разработчикам, которые ничего другого не знают. Думаю, GoLang порвёт ноду в десятки раз.
...
Рейтинг: 0 / 0
IdTCPServer отправить сообщение клиенту
    #40033565
SOFT FOR YOU
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DmSer,

Delphi порвёт и ноду, и голанг, и джаву
Если этим заняться
...
Рейтинг: 0 / 0
IdTCPServer отправить сообщение клиенту
    #40033570
Kazantsev Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DmSer
Реально кто-нибудь использует Indy10 с тредпулом ? В инете чрезвычайно мало информации на эту тему!

DataSnap.

SOFT FOR YOU
Но мне не интересно тратить время на такие тесты )

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

Delphi порвёт и ноду, и голанг, и джаву
Если этим заняться


Каким образом Delphi порвёт GoLang? Его даже C# не смог обогнать, хотя там есть поддержка асинхронного программирования на уровне языка (а в GoLang эквивалентного асинхронного программирования нет, зато есть Go-рутины :-).
У нас в Delphi какую операцию не возьми - она блокирующая. Читаем файл, пишем файл, копируем файл, делаем запрос к БД, работаем с сетью - везде мы блокируем поток, поэтому вынуждены их создавать в большом количестве, компенсируем эту проблему с помощью пулов, PPL и т.д. Чтобы порвать GoLang, необходимо, чтобы любая операция была неблокирующая и при этом стиль кодирования должен оставаться синхронным (иначе это нафик никому не нужно, ибо становится слишком сложно). А для этого нужна поддержка async / await.
...
Рейтинг: 0 / 0
IdTCPServer отправить сообщение клиенту
    #40033572
DmSer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SOFT FOR YOU
DmSer
пропущено...


Похожий на что? На промайзы или на async/await ?


Я конечно могу быть неточен
Но по-моему, всё это рутина вокруг задач (тасков)


Промайзы в JS это примерно следующее:
https://github.com/VSoftTechnologies/VSoft.Awaitable
...
Рейтинг: 0 / 0
IdTCPServer отправить сообщение клиенту
    #40033579
SOFT FOR YOU
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kazantsev Alexey
Цирк с конями, блин.

Пургу несёшь ты, а цирк с конями у меня?
Ну ок
Мне не интересно это обсуждать
Кстати один из членов команды сказал, что такие тесты будут проводиться
Так что можешь подождать N времени и увидеть результаты
Ну либо сделать что-то самостоятельно и убедиться в несостоятельности подхода, который предлагаешь
...
Рейтинг: 0 / 0
IdTCPServer отправить сообщение клиенту
    #40033583
SOFT FOR YOU
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DmSer,

Конечно, языки различаются. На скриптовых «однопоточных» языках специальный упрощённый синтаксис, заточенный под особенности архитектуры

Но под капотом это тот же самый пул потоков, на котором исполняются задачи
В Node, Golang, Python и иже с ними используется специфичный менеджер памяти, с отложенной сборкой мусора, дефрагментациями, есть хендлы, дополнительные проверки, дополнительные синхронизации. На Delphi всё это можно провернуть оптимальнее

Опять таки можно - не значит, что это будет
Вопрос в том, какому количеству людей было бы интересно поучаствовать в таком проекте
И постепенно шаг за шагом добиваться большей производительности и удобства
Оглядываясь конечно на другие удачные решения. Того же мормота, ноды, rtc и т.д.
...
Рейтинг: 0 / 0
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
116 сообщений из 116, показаны все 5 страниц
Форумы / Delphi [игнор отключен] [закрыт для гостей] / IdTCPServer отправить сообщение клиенту
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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