MainRadiotalkCustom
Общие вопросы по интернет радио вещанию
4   •   Посмотреть все темы

Как оптимизировать - liquidsoap?

 

24
IceJOKER @IceJOKER
gyurgin_1, по вашему совету заказал выделенный сервер, убавил качество 32 битрейта, при перекодировке 6 радиостанций в 32 и 128 загрузка CPU ~40% - это нормально? и это при том, что в данный момент на линии несколько человек, а могут одновременно слушать 10-20 а то и 30 пользователь, не рухнет ли сервер тогда?

382
Grigorij @gyurgin_1
Ну я имел ввиду каждой станции дать по конфигу, Про загрузку не скажу, сначала данные сервера давайте. Слушатели то при чем? Это уже icecast, уверен - он и 100 и 1000 потянет.

24
IceJOKER @IceJOKER
gyurgin_1 пишет:

Ну я имел ввиду каждой станции дать по конфигу, Про загрузку не скажу, сначала данные сервера давайте. Слушатели то при чем? Это уже icecast, уверен - он и 100 и 1000 потянет.

Т.е. для каждой станции создавать файл конфига - radio_first.liq, radio_second.liq .... radio_n.liq? а потом что делать? в данный момент запускаю liquidsoap командой - service liquidsoap start

IceCast то потянет, а вот liquidsoap ведь перекодирует на лету(в 32 и 128 битрейта, хотелось бы еще и 64, но пока не хочу рисковать)


Intel(R) Core(TM) i7-6700 CPU @ 3.40GHz, 800 MHz
Intel(R) Core(TM) i7-6700 CPU @ 3.40GHz, 800 MHz
Intel(R) Core(TM) i7-6700 CPU @ 3.40GHz, 800 MHz
Intel(R) Core(TM) i7-6700 CPU @ 3.40GHz, 3400 MHz
Intel(R) Core(TM) i7-6700 CPU @ 3.40GHz, 800 MHz
Intel(R) Core(TM) i7-6700 CPU @ 3.40GHz, 800 MHz
Intel(R) Core(TM) i7-6700 CPU @ 3.40GHz, 800 MHz
Intel(R) Core(TM) i7-6700 CPU @ 3.40GHz, 800 MHz

Mem: 32060 1406 30653

Отредактировано IceJOKER - 13.12.2015
382
Grigorij @gyurgin_1
А у Вас получается из репов к тому же liquidsoap. Что то непонятно, почему одно ядро 3400 )) Отдельный конфиг запускать просто:
/usr/bin/liquidsoap /путь к файлу конфига, если по ядрам, давно taskset не пользовался, как то так: taskset <битовая маска ядра> /usr/bin/liquidsoap /путь к файлу конфига или taskset -c <список ядер> /usr/bin/liquidsoap /путь к файлу конфига

24
IceJOKER @IceJOKER
Что то непонятно, почему одно ядро 3400 ))

Это отец остальных ядер ))

При запуске через service сразу же подгружает все файлы конфигурации, к примеру сейчас у меня там:
main.liq //основные данные , которые будут подключены (include)
first_radio.liq // одно радио(в начале %include "main.liq")
other_radios.liq // остальные станции....


при перезапуске загрузились все конфигурации.


Получается нужно сначала выполнить:
service liquidsoap stop
а потом по отдельно выполнить:
/usr/bin/liquidsoap /etc/liquidsoap/first_radio.liq
/usr/bin/liquidsoap /etc/liquidsoap/other_radio.liq


я правильно понял?

Отредактировано IceJOKER - 13.12.2015
24
IceJOKER @IceJOKER
После недолгих мучений все таки получилось.
Может кому понадобится:
*Запускаем без рутовских прав, с ключом -d, чтоб запустить режим демона
*Если выдал ошибку доступа к логам, то нужно сменить права на папку /var/log/liquidsoap

Далее запускаем конфиги один за другим.
/usr/bin/liquidsoap -d /etc/liquidsoap/config_one.liq
/usr/bin/liquidsoap -d /etc/liquidsoap/config_two.liq
....


ОГРОМНОЕ СПАСИБО - gyurgin_1

Отредактировано IceJOKER - 13.12.2015
382
Grigorij @gyurgin_1
Да не за что.
с ключом -d, чтоб запустить режим демона

А не проще в конфиге прописать?

24
IceJOKER @IceJOKER
gyurgin_1 пишет:

Да не за что.
с ключом -d, чтоб запустить режим демона

А не проще в конфиге прописать?

а какой конфиг за это отвечает ?) проще , конечно, если так можно

382
Grigorij @gyurgin_1
set("init.daemon",true)
set("init.daemon.pidfile",true)
set("init.daemon.pidfile.path", "/путь к файлу процесса/.pid")

По pid файлу легко перезапускать отдельную копию, если неохота с ними возиться:
set("init.daemon",true)
set("init.daemon.pidfile",false)

24
IceJOKER @IceJOKER
gyurgin_1 пишет:

set("init.daemon",true)
set("init.daemon.pidfile",true)
set("init.daemon.pidfile.path", "/путь к файлу процесса/.pid")

По pid файлу легко перезапускать отдельную копию, если неохота с ними возиться:
set("init.daemon",true)
set("init.daemon.pidfile",false)

спасибо, пока без pid-ов обойдусь )

24
IceJOKER @IceJOKER
Запустил следующие команды:
taskset 0x6 /usr/bin/liquidsoap /etc/liquidsoap/config_one.liq
taskset 0x7 /usr/bin/liquidsoap /etc/liquidsoap/config_two.liq
taskset 0x8 /usr/bin/liquidsoap /etc/liquidsoap/config_three.liq



А пашут лишь первые 4 процессора , хотя команды выполнились успешно.
Проверка показывает , что процессы работают на ядрах - 0,2

остальные 4 ядра отдыхают

Отредактировано IceJOKER - 13.12.2015
24
IceJOKER @IceJOKER
Пытался установить для родительского pid новую маску , а он выдал следующее:
pid 11950's current affinity mask: 8
pid 11950's new affinity mask: 8


Запутался чет, может дочерние процессы запущенны на основных ядрах ..а их там дофига.
Конфиг одного радио - перекодировка в 2 битрейта, а запущено 6 процессов, 7 учитывая родительский

382
Grigorij @gyurgin_1
Где Вы такие маски взяли то? Если мне память не изменяет должно быть как то так:
CPU #0: 0x00000001
CPU #1: 0x00000002
CPU #2: 0x00000004
CPU #3: 0x00000008
CPU #4: 0x00000010
CPU #5: 0x00000020
CPU #6: 0x00000040
CPU #7: 0x00000080

24
IceJOKER @IceJOKER
gyurgin_1 пишет:

Где Вы такие маски взяли то? Если мне память не изменяет должно быть как то так:
CPU #0: 0x00000001
CPU #1: 0x00000002
CPU #2: 0x00000004
CPU #3: 0x00000008
CPU #4: 0x00000010
CPU #5: 0x00000020
CPU #6: 0x00000040
CPU #7: 0x00000080


********** - вот здесь

по ходу я неправильно понял, ********** - вы правы

Отредактировано IceJOKER - 13.12.2015
24
IceJOKER @IceJOKER
gyurgin_1, отдельное спасибо за совет разделить конфиги, только что это помогло избежать крушения всех станций из-за ошибки в одной.

а поможет ли fallback с подобным? т.е. у меня сейчас если произойдет какая-то ошибка, то liquidsoap просто закрывается и соответственно станции перестают работать пока я не перезапущу, если прикрутить fallback , то при возникновении ошибок он воспользуется им или же тоже закроется молча?

p.s. в моем случае можно ли один fallback установить для всех разом? и как? синтаксис недолюбливаю этот, вроде питоновский стиль, плохо дружим..

382
Grigorij @gyurgin_1
Именно так, или mksafe или замкните на что нибудь, можно вовсе на blank(), я же вроде писал выше.