From f58a0a2e1fd8dedf06fb3ca9a6580325b466e687 Mon Sep 17 00:00:00 2001 From: Ivan Vilata-i-Balaguer Date: Thu, 21 Apr 2016 13:12:49 +0200 Subject: [PATCH] Add Cron script to watch seed node memory usage in GNU/Linux server --- doc/bitsquare-sn.cron.sh | 43 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100755 doc/bitsquare-sn.cron.sh diff --git a/doc/bitsquare-sn.cron.sh b/doc/bitsquare-sn.cron.sh new file mode 100755 index 0000000000..7cd28053ed --- /dev/null +++ b/doc/bitsquare-sn.cron.sh @@ -0,0 +1,43 @@ +#!/bin/sh +# Restart Bitsquare seed node daemons whose resident memory (RSS) +# is over MAX_RSS_MiB. +# +# Scripts in the INITDIR must contain a ``SN_ADDRESS=`` +# assignment. +# +# Exit with status 2 if there were restarted daemons. +# +# Author: Ivan Vilata-i-Balaguer +MAX_RSS_MiB=512 + +PIDDIR=/var/run/bitsquare-sn +INITDIR=/etc/init.d + +# Restart de daemon with the given address. +restart() { + rcscript=$(grep -El "^SN_ADDRESS=['\"]?$1['\"]?" $INITDIR/*) + if [ "$rcscript" ]; then + "$rcscript" restart + fi +} + +restarted= +max_rss_kib=$((MAX_RSS_MiB*1024)) +for pidfile in $PIDDIR/*.pid; do + address=$(basename ${pidfile%.pid}) + pid=$(cat "$pidfile") + test "$pid" || continue + rss_kib=$(ps -o rss= "$pid") + test "$rss_kib" || continue + if [ "$rss_kib" -gt "$max_rss_kib" ]; then + echo "Bitsquare seed node $address ($((rss_kib/1024))M) surpassed memory limit of ${MAX_RSS_MiB}M, restarting." >&2 + restart $address + restarted=y + fi +done + +if [ "$restarted" ]; then + exit 2 +else + exit 0 +fi