Size: a a a

2020 February 04

YG

Yuriy Gorlichenko in pro.lua
ну... такой конфиг смысла то особого не имеет... как минимум касаемо require и http.request
источник

PG

Pavel G in pro.lua
Yuriy Gorlichenko
ну... такой конфиг смысла то особого не имеет... как минимум касаемо require и http.request
просто убедиться сколько раз он выполняется при звонке... и похоже в общей части require делать не стоит
источник

YG

Yuriy Gorlichenko in pro.lua
Pavel G
просто убедиться сколько раз он выполняется при звонке... и похоже в общей части require делать не стоит
У вас выполняются 3 канала:
-взходящий
- новый созданный после answer
- hangup
соответсвенно вот ваши 3 раза - то есть по разу на каждого участника bridge
источник

S

Snusmumriken in pro.lua
А там само ядро создаёт луа-стейты на каждый чих? Его нельзя пофиксить, на манер той же опенрести с async_io?
источник

YG

Yuriy Gorlichenko in pro.lua
Snusmumriken
А там само ядро создаёт луа-стейты на каждый чих? Его нельзя пофиксить, на манер той же опенрести с async_io?
Там сама по себе архитектура сервиса не позволяет по нормальному создать luastate разово и просто релодить
Это типа apache - на каждый запрос новый поток

Пофиксить можно все, вопрос в человекочасах
источник

PG

Pavel G in pro.lua
Yuriy Gorlichenko
У вас выполняются 3 канала:
-взходящий
- новый созданный после answer
- hangup
соответсвенно вот ваши 3 раза - то есть по разу на каждого участника bridge
Хм.. Если поставить паузу после http.request видно что они выполняются последовательно и answer происходит после 3 вызова...
источник

YG

Yuriy Gorlichenko in pro.lua
Pavel G
Хм.. Если поставить паузу после http.request видно что они выполняются последовательно и answer происходит после 3 вызова...
У вас сначала обработчики активируются, и потом только уже исполняется диалплан
источник

DF

Dollar Føølish in pro.lua
Snusmumriken
А там само ядро создаёт луа-стейты на каждый чих? Его нельзя пофиксить, на манер той же опенрести с async_io?
Чо за асинкио в рести?
источник

S

Snusmumriken in pro.lua
Dollar Føølish
Чо за асинкио в рести?
Ну там типа открывается всего несколько луастейтов на всё, и эти луастейты очень быстро переключаются между задачами, в моменты простоя (чтение сокетов, запись на диск).
источник

S

Snusmumriken in pro.lua
И они держатся пока сервер не завершит работу.
источник

DF

Dollar Føølish in pro.lua
А там используется кооперативный мультитаскинг нжинкса что-ли?
источник

S

Snusmumriken in pro.lua
Ага
источник

DF

Dollar Føølish in pro.lua
Это хорошее решение
источник

YG

Yuriy Gorlichenko in pro.lua
в nignx вообще на сколкьо я помнб даже сокеты используются обстрактные nginx-ковые (cosokets по-моему), соответсвенно они и не блокирующие получаются.
источник

S

Snusmumriken in pro.lua
Ну, это очевидно абстракция над осевыми сокетами, но да, оно сделано так чтобы быть зашибись.
источник

YG

Yuriy Gorlichenko in pro.lua
Snusmumriken
Ну, это очевидно абстракция над осевыми сокетами, но да, оно сделано так чтобы быть зашибись.
Ну естессно над осевыми) я к тому что не используется lua-sockets  там
Но в общем то это так. чисто для расширения данной инфомрации. Отрицательной нагрузки мое повествование не несет 😊
источник

PG

Pavel G in pro.lua
Yuriy Gorlichenko
У вас сначала обработчики активируются, и потом только уже исполняется диалплан
Тогда может профита в Lua-кофниге перед AGI на том-же Lua и нет?
источник

YG

Yuriy Gorlichenko in pro.lua
Pavel G
Тогда может профита в Lua-кофниге перед AGI на том-же Lua и нет?
есть
Он вполне быстрый и более гибкий, а самое главное читабельный чем обычный extensions.conf
AGI умеет далеко не все
но вообще каждый использует то, что удобнее ему

НО extensions.lua надо использовать с умом и пониманием того как работает астериск
источник

AM

Alexey Melnichuck in pro.lua
Yuriy Gorlichenko
В астериске и Freeswitch  динамическое создание тредов на каждый новый звонок. Поэтому запуск luastate происходит в каждом вновь созданном потоке (которые генерится для каждого нового звонка).

nginx и kamailio сделаны по другому. Там luastate запускается один раз при старте на каждый поток - воркер, которые запускаются как пул в начале. соответсвенно и luastate запускается один раз
Во freeswitch для маршрутизации создается один поток пер профиль. Для сигналки - отдельные. Плюс для разных команд могут создаваться еще дополнительные потоки. Но для каждого вызова Lua создается отдельный стейт и в него загружаются все библиотеки заново. Даже для EventHandler
источник

YG

Yuriy Gorlichenko in pro.lua
Alexey Melnichuck
Во freeswitch для маршрутизации создается один поток пер профиль. Для сигналки - отдельные. Плюс для разных команд могут создаваться еще дополнительные потоки. Но для каждого вызова Lua создается отдельный стейт и в него загружаются все библиотеки заново. Даже для EventHandler
ну вот я в общем то об этом и говорю. по крайней мере касаемо каждого вызова

Но в целом в  FS все сложнее. Это да
источник