ОсновноеRadiotalkПользовательское
Общие вопросы по интернет радио вещанию
7   •   Посмотреть все темы

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

 

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

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

0
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, но пока не хочу рисковать)

  1.  
  2. Intel(R) Core(TM) i7-6700 CPU @ 3.40GHz, 800 MHz
  3. Intel(R) Core(TM) i7-6700 CPU @ 3.40GHz, 800 MHz
  4. Intel(R) Core(TM) i7-6700 CPU @ 3.40GHz, 800 MHz
  5. Intel(R) Core(TM) i7-6700 CPU @ 3.40GHz, 3400 MHz
  6. Intel(R) Core(TM) i7-6700 CPU @ 3.40GHz, 800 MHz
  7. Intel(R) Core(TM) i7-6700 CPU @ 3.40GHz, 800 MHz
  8. Intel(R) Core(TM) i7-6700 CPU @ 3.40GHz, 800 MHz
  9. Intel(R) Core(TM) i7-6700 CPU @ 3.40GHz, 800 MHz
  10. Mem: 32060 1406 30653

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

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

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

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


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


Получается нужно сначала выполнить:
  1. service liquidsoap stop

а потом по отдельно выполнить:
  1. /usr/bin/liquidsoap /etc/liquidsoap/first_radio.liq
  2. /usr/bin/liquidsoap /etc/liquidsoap/other_radio.liq


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

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

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


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

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

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

0
24
IceJOKER @IceJOKER
gyurgin_1 пишет:

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

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

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

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

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

0
24
IceJOKER @IceJOKER
gyurgin_1 пишет:

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

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

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

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



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

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

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


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

0
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

0
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
0
24
IceJOKER @IceJOKER
gyurgin_1, отдельное спасибо за совет разделить конфиги, только что это помогло избежать крушения всех станций из-за ошибки в одной.

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

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

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

0





Согласие на обработку данных на нашем сайте

Продолжая просматривать страницу, вы соглашаетесь с использованием файлов «Cookie» и с Политикой конфиденциальности «Privacy».
Наверху или внизу страницы вы можете изменить валюту и язык по умолчанию. Английская версия сайта ещё находится в доработке и доступна не полностью.