From fbaba59dca707f2e9a2dff7587e8c7cdfec455d8 Mon Sep 17 00:00:00 2001 From: Martin Konecny <martin.konecny@gmail.com> Date: Tue, 26 Feb 2013 14:47:48 -0500 Subject: [PATCH] CC-4974: Watchdog for ensuring Liquidsoap does not consume more than 1GB of memory -changed to 600MB for now. May lower even more later --- python_apps/pypo/airtime-liquidsoap | 2 +- python_apps/pypo/airtime-liquidsoap-init-d | 7 +++++-- python_apps/pypo/liquidsoap_scripts/ls_script.liq | 4 +++- python_apps/pypo/monit-airtime-liquidsoap.cfg | 9 ++++++++- 4 files changed, 17 insertions(+), 5 deletions(-) diff --git a/python_apps/pypo/airtime-liquidsoap b/python_apps/pypo/airtime-liquidsoap index bfefcf46f..75821b942 100755 --- a/python_apps/pypo/airtime-liquidsoap +++ b/python_apps/pypo/airtime-liquidsoap @@ -6,7 +6,7 @@ virtualenv_bin="/usr/lib/airtime/airtime_virtualenv/bin/" ls_user="pypo" export HOME="/var/tmp/airtime/pypo/" api_client_path="/usr/lib/airtime/" -ls_path="/usr/bin/airtime-liquidsoap --verbose -f" +ls_path="/usr/bin/airtime-liquidsoap --verbose -f -d" ls_param="/usr/lib/airtime/pypo/bin/liquidsoap_scripts/ls_script.liq" exec 2>&1 diff --git a/python_apps/pypo/airtime-liquidsoap-init-d b/python_apps/pypo/airtime-liquidsoap-init-d index 7096bc59c..106006fab 100755 --- a/python_apps/pypo/airtime-liquidsoap-init-d +++ b/python_apps/pypo/airtime-liquidsoap-init-d @@ -20,8 +20,11 @@ start () { chown pypo:pypo /var/log/airtime/pypo chown pypo:pypo /var/log/airtime/pypo-liquidsoap - start-stop-daemon --start --background --quiet --chuid $USERID:$GROUPID \ - --nicelevel -15 --make-pidfile --pidfile $PIDFILE --startas $DAEMON + touch /var/run/airtime-liquidsoap.pid + chown pypo:pypo /var/run/airtime-liquidsoap.pid + + start-stop-daemon --start --quiet --chuid $USERID:$GROUPID \ + --pidfile /var/run/airtime-liquidsoap.pid --nicelevel -15 --startas $DAEMON monit monitor airtime-liquidsoap >/dev/null 2>&1 } diff --git a/python_apps/pypo/liquidsoap_scripts/ls_script.liq b/python_apps/pypo/liquidsoap_scripts/ls_script.liq index 489d494a3..6663193f0 100644 --- a/python_apps/pypo/liquidsoap_scripts/ls_script.liq +++ b/python_apps/pypo/liquidsoap_scripts/ls_script.liq @@ -1,10 +1,12 @@ -%include "library/pervasives.liq" %include "/etc/airtime/liquidsoap.cfg" set("log.file.path", log_file) set("log.stdout", true) set("server.telnet", true) set("server.telnet.port", 1234) +set("init.daemon.pidfile.path", "/var/run/airtime-liquidsoap.pid") + +%include "library/pervasives.liq" #Dynamic source list #dyn_sources = ref [] diff --git a/python_apps/pypo/monit-airtime-liquidsoap.cfg b/python_apps/pypo/monit-airtime-liquidsoap.cfg index f8efcaf18..297854faa 100644 --- a/python_apps/pypo/monit-airtime-liquidsoap.cfg +++ b/python_apps/pypo/monit-airtime-liquidsoap.cfg @@ -1,4 +1,4 @@ - set daemon 10 # Poll at 5 second intervals + set daemon 15 # Poll at 5 second intervals set logfile /var/log/monit.log set httpd port 2812 @@ -7,3 +7,10 @@ with pidfile "/var/run/airtime-liquidsoap.pid" start program = "/etc/init.d/airtime-liquidsoap start" with timeout 5 seconds stop program = "/etc/init.d/airtime-liquidsoap stop" + + if mem > 600 MB for 3 cycles then restart + if failed host localhost port 1234 + send "version\r\nexit\r\n" + expect "Liquidsoap" + retry 3 + then restart