Re[15]: WA: 3 млн tcp соединений на одном сервере
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 06.08.20 14:16
Оценка:
Здравствуйте, Pzz, Вы писали:

N>>Проблемы начинаются, если делается синхронный вызов. Каждый такой вызов это:


Pzz>Т.е., я правильно понимаю, что у каждого процесса ровно одна входная очередь, в которую попадают и запросы к этому процессу, и ответы на его собственные запросы, причем чтобы дождаться ответа на собственный запрос, процесс должен при поступлении каждого очередного сообщения прочесывать всю очередь, включая накопившиеся за время ожидания запросы к нему?


Да, именно так. Ну см. поправку на оптимизацию частного случая, в который ещё надо попасть.

Pzz>Ужос.


Ну а я о чём говорю весь тред
Причём пролечить это — чуть сложнее чем совсем тривиально (добавить параметр в десяток похожих вызовов), но — не хотят. Первый известный мне плач относится к 2008 или 2009 году, а наверняка были и раньше.

Pzz>При такой архитектуре напрашивается мысль, что использование синхронных вызовов во всех промежуточных процессах — непозволительная роскошь. Т.е., процесс должен получить сообщение, что-то с ним сделать, куда-то переслать дальше, если сам не может обработать, и забыть навсегда. Отправка ответа изначальному инициатору запроса всегда должна быть заботой того процесса, который окончательно разрешил вопрос (самого последнего процесса в цепочке).


Это ещё один вариант залезания в потроха (формально, даже описанные мной форматы сообщений это внутренняя кухня модуля gen_server, а не публичное API), и/или заката солнца полностью вручную (самому отрабатывать все сообщения, включая служебные сообщения OTP).

Pzz>Хуже всего получаецца, если цепочка исполнения запроса разветвляется, и "последних" процессов несколько. Тогда кто-то должен свести результат воедино. Наверняка в ерланге есть какая-то идеома на этот счет, такая потребность должна возникать постоянно.


Именно такого, по-моему, нет. Обычный API даёт только синхронные вызовы или асинхронные передачи, остальное — делайте сами.

N>>Спасибо на самом деле я уже за давностью не помню, это я предположил или кто-то из команды, но я запомнил и оно, по экспериментам, подтвердилось.


Pzz>Не скромничай, кто бы ни предположил, понять такую гипотезу тоже не всякий может


ok
The God is real, unless declared integer.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.