2017-01-10 28 views
0

Я использовал подобное решение, подобное этому Restarting ffmpeg process using monit, чтобы перезапустить поток ffmpeg, если он по какой-то причине не работает. Помните его не дублирующую проблему/вопрос, потому что у меня есть другие проблемы, в отличие от примера вопроса/решения Restarting ffmpeg process using monit, о котором я расскажу ниже. Так вот моя конфигурация монит:Перезапустите процесс ffmpeg с использованием monit, если TOTAL CPU меньше 1%

check process FFMPEGStream with pidfile PATH-to-file/streampid.pid 
    start program = "PATH-to-file/streambash.sh restart" 
    stop program = "PATH-to-file/streambash.sh stop" 
    if TOTAL CPU is less than 1% for 10 cycles then restart 

Вот мой streambash.sh файл:

#!/bin/bash 
    pid_file="PATH-to-file/streampid.pid" 

    case "$1" in 
    restart) 
     PATH-to-file/streambash.sh stop 
     PATH-to-file/streambash.sh start 
      ;; 

    start) 
     rm $pid_file 
     /usr/bin/ffmpeg -i "INPUT-PATH" -c:v libx264 -b:v 900k -preset ultrafast -aspect 16:9 -s 640x376 -strict experimental -c:a aac -b:a 96k -f flv "RTMP-PATH" &> /dev/null & 
     ch_pid=$! 
     echo "Start Stream1: ffmpeg = $ch_pid"; 
     echo $ch_pid > $pid_file 
      ;; 

    stop) 
     echo "Stop ffmpeg Stream1"; 
     kill `cat $pid_file` &> /dev/null 
      ;; 

    *) 
     echo "Usage: PATH-to-file/streambash.sh {start|stop|restart}" 
     exit 1 
      ;; 

    esac 
    exit 0 
    echo $pid_file 

монит может запустить файл Баш успешно, но когда это условие «, если TOTAL CPU меньше 1 % для 10 циклов, а затем перезапустить « соответствует в конфигурации monit, он пытается перезагрузить, он дает ошибку, что процесс не запущен. Но в действительности процесс ffmpeg все еще работает в фоновом режиме, и я вижу, что поток работает на моем сайте. Вот MONIT журналы:

[CET Jan 10 12:55:02] error : 'FFMPEGStream' total cpu usage of 0.4% matches resource limit [cpu usage>1.0%] 
    [CET Jan 10 12:55:07] error : 'FFMPEGStream' total cpu usage of 0.0% matches resource limit [cpu usage>1.0%] 
    [CET Jan 10 12:55:12] error : 'FFMPEGStream' total cpu usage of 0.0% matches resource limit [cpu usage>1.0%] 
    [CET Jan 10 12:55:17] error : 'FFMPEGStream' total cpu usage of 0.4% matches resource limit [cpu usage>1.0%] 
    [CET Jan 10 12:55:22] error : 'FFMPEGStream' total cpu usage of 0.9% matches resource limit [cpu usage>1.0%] 
    [CET Jan 10 12:55:27] error : 'FFMPEGStream' total cpu usage of 0.9% matches resource limit [cpu usage>1.0%] 
    [CET Jan 10 12:55:32] error : 'FFMPEGStream' total cpu usage of 0.0% matches resource limit [cpu usage>1.0%] 
    [CET Jan 10 12:55:37] error : 'FFMPEGStream' total cpu usage of 0.0% matches resource limit [cpu usage>1.0%] 
    [CET Jan 10 12:55:42] error : 'FFMPEGStream' total cpu usage of 0.0% matches resource limit [cpu usage>1.0%] 
    [CET Jan 10 12:55:47] error : 'FFMPEGStream' total cpu usage of 0.4% matches resource limit [cpu usage>1.0%] 
    [CET Jan 10 12:55:50] info  : 'FFMPEGStream' trying to restart 
    [CET Jan 10 12:55:50] info  : 'FFMPEGStream' stop: PATH-to-file/streambash.sh 
    [CET Jan 10 12:55:51] info  : 'FFMPEGStream' start: PATH-to-file/streambash.sh 
    [CET Jan 10 12:55:56] error : 'FFMPEGStream' process is not running 
    [CET Jan 10 12:55:58] info  : 'FFMPEGStream' trying to restart 
    [CET Jan 10 12:55:58] info  : 'FFMPEGStream' start: PATH-to-file/streambash.sh 
    [CET Jan 10 12:56:04] error : 'FFMPEGStream' process is not running 
    [CET Jan 10 12:56:04] info  : 'FFMPEGStream' trying to restart 
    [CET Jan 10 12:56:04] info  : 'FFMPEGStream' start: PATH-to-file/streambash.sh 
    [CET Jan 10 12:56:09] error : 'FFMPEGStream' process is not running 
    [CET Jan 10 12:56:09] info  : 'FFMPEGStream' trying to restart 
    [CET Jan 10 12:56:09] info  : 'FFMPEGStream' start: PATH-to-file/streambash.sh 

монит продолжает пытаться перезапустить процесс и на каждую повторную попытку, он сбрасывает новый PID в PATH-к-файл/streampid.pid, но, как я сказал, что это, кажется, это как-то может остановить фактический поток ffmpeg/pid, которые продолжают работать в фоновом режиме.

+0

Почему бы не использовать приятные или группы? –

+0

Моя проблема не в обработке ЦП, моя проблема в том, что процесс не перезапущен или по крайней мере не показан как начатый в monit, если после его не работает. Использование процессора - это просто способ, которым я знал, что процесс не работает, или ffmpeg - это кодирование или любая связанная с этим проблема. Поэтому не имеет смысла использовать славные или группы. – user2201239

ответ

0

Ваш опрос/интервал проверки демонов очень низкий, 5 секунд?

FFMpeg не работает в течение 5 секунд, поэтому monit пытается запустить его снова, постоянно в цикле.

Если вы хотите иметь такой низкий интервал проверки, вам необходимо установить тайм-аут по команде запуска, вдоль линий:

start program = "PATH-to-file/streambash.sh restart" with timeout 30 seconds 

Это действительно помогает мне понять, как MONIT в мыслительной, часы живой журнал в окне терминала, в то время как monit делает вещи:

tail -f /var/log/monit.log 
+0

Другое дело, monit/monit webif очень медленно обнаруживает и обновляет использование процессора в недавно запущенном процессе. Будьте терпеливы и дайте ему минуту или больше! Даже после того, как процесс начался и использует, например, 10% CPU, monit webif утверждает, что процесс все еще использует 0% и перезапускает процесс, иногда в бесконечном цикле. – Paul

 Смежные вопросы

  • Нет связанных вопросов^_^