diff --git a/tools/checkfds.sh b/tools/checkfds.sh index cd835406..ed0b124f 100755 --- a/tools/checkfds.sh +++ b/tools/checkfds.sh @@ -1,13 +1,46 @@ #!/bin/sh -http_port=8181 -db_port=6432 -redis_port=6379 +me=$0 +if test -h "$me"; then + me=`readlink $me` +fi +ENV_DIR=$(cd `dirname "$me"`/../config/environments || exit 1; pwd) + +echo "ENV_DIR: ${ENV_DIR}" + +if test -z "$TILER_ENVIRONMENT"; then + TILER_ENVIRONMENT=${ENV_DIR}/development.js +fi + +if test "$1" = "config"; then +cat <<'EOM' +graph_title Tiler fd usage +graph_vlabel tiler fds +procs.label Number of tiler processes +pgsql.label PostgreSQL connections (max) +redis.label Redis connections (max) +http.label Incoming http requests (max) +nfd.label Number of open file descriptors (max) +EOM +exit 0 +elif test x"$1" != "x"; then + # override env file + TILER_ENVIRONMENT="${ENV_DIR}/${1}.js" +fi + +http_port=$(echo "console.log(require('${TILER_ENVIRONMENT}').port)" | node) || exit 1 +pgsql_port=$(echo "console.log(require('${TILER_ENVIRONMENT}').postgres.port)" | node) || exit 1 +redis_port=$(echo "console.log(require('${TILER_ENVIRONMENT}').redis.port)" | node) || exit 1 pids=$(lsof -i :${http_port} | grep LISTEN | awk '{print $2}') nworkers=$(echo "${pids}" | wc -l) pids=$(echo "${pids}" | paste -sd ' ') +if test -z "${pids}"; then + echo "No processes found listening on tcp port '${http_port}'" >&2 + exit 1 +fi + tmpreport="/tmp/checkfd.$$.txt" lsof -p $(echo "${pids}" | tr ' ' ',') > "${tmpreport}" @@ -19,7 +52,7 @@ maxtot=0 for pid in ${pids}; do - cnt=$(grep "${pid}" "${tmpreport}" | grep ":${db_port} " | wc -l); + cnt=$(grep "${pid}" "${tmpreport}" | grep ":${pgsql_port} " | wc -l); if test $cnt -gt $maxdb; then maxdb=$cnt; fi cnt=$(grep "${pid}" "${tmpreport}" | grep ":${redis_port} " | wc -l);