Disponibilizo este codigo aos usuarios do serviço mConf.rnp.br que atualmente esta usando a versão 2.2.0 do BBB.
Crio esta documentação baseado no MR, dos proprios devs do BBB.
Na versão 2.2.0 os videos são processados sequenciamente (um video por vez) pelo arquivo rap-process-worker.rb
, executado pelo serviço bbb-rap-process-worker1.service
.
O arquivo rap-process-worker.multiprocess.rb
que disponibilizo aceita filtros para reduzir a quantidade de arquivos que ele vai processar (Ex. -p "[7-8]$"
que so processa arquivos cujo nome finalizam em 7 e 8).
Isto permite iniciar varias instancia (através de varios serviços) sem que elas "roubem" os arquivos das outras.
Existem varias pastas workerX
que contem os serviços que rodarão em paralelo.
O calculo que fizemos é que cada serviço ocupa em media 3 nucleos do CPU (Ex. 10 workers ocupariam 30 nucleos).
Escolha a quantidade de acordo com sua realidade.
# No servidor de Gravação, clone este repositorio e entre em sua pasta
git clone https://github.com/arthurd2/bbb-parallel-workers.git
cd bbb-parallel-workers
# ANTES DE QUALQUER COISA
# Teste para ver se a versão do seu `rap-process-worker.rb` esta bantendo com a nossa.
# O comando deve retornar vazio, caso contrario
diff rap-process-worker.rb-original /usr/local/bigbluebutton/core/scripts/rap-process-worker.rb
# Copie o arquivo de processamento
chmod 755 rap-process-worker.multiprocess.rb
cp rap-process-worker.multiprocess.rb /usr/local/bigbluebutton/core/scripts/
# Copie o arquivo de serviços da pasta desejada (de acordo com a quantidade de processos paralelos desejados):
# ALTERE O NOME DA PASTA WORKERSX
cp workersX/*.service /usr/lib/systemd/system/
- Remover as dependencias
cp /usr/lib/systemd/system/bbb-record-core.target /usr/lib/systemd/system/.bbb-record-core.target.bkp
sed -i 's/bbb-rap-process-worker.service//g' /usr/lib/systemd/system/bbb-record-core.target
- Desativando o serviço
# Parando e desabilitando os serviços atuais
systemctl stop bbb-rap-process-worker.service
systemctl disable bbb-rap-process-worker.service
systemctl mask bbb-rap-process-worker.service
#Este ultimo stop é so pra garantir mesmo
systemctl stop bbb-rap-process-worker.service
- Iniciando os serviços
# ALTERE O NOME DA PASTA WORKERSX
# Habilitando todos os servicoes
for i in `ls workersX/*.service`; do systemctl enable $i ; done
# Iniciando todos os serviços
for i in `ls workersX/*.service`; do systemctl start $i ; done
- Voltando o Backup
cp /usr/lib/systemd/system/.bbb-record-core.target.bkp /usr/lib/systemd/system/bbb-record-core.target
- Matando os servicos os serviços
# ALTERE O NOME DA PASTA WORKERSX
# Habilitando todos os servicoes
for i in `ls workersX/*.service`; do systemctl stop $i ; done
# Iniciando todos os serviços
for i in `ls workersX/*.service`; do systemctl mask $i ; done
# Desabilitando todos os serviços
for i in `ls workersX/*.service`; do systemctl disable $i ; done
- Voltando os serviços
systemctl enable bbb-rap-process-worker.service
systemctl start bbb-rap-process-worker.service