From 1ab69d92dc1f262060be9b90c88b4e592ce696f8 Mon Sep 17 00:00:00 2001 From: Jason Thomas Date: Mon, 9 Apr 2018 17:23:55 -0400 Subject: [PATCH 1/4] Use --max-tasks-per-child as per celery documentation --- bin/docker-entrypoint | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/bin/docker-entrypoint b/bin/docker-entrypoint index eb0a5fbc26..eed8c0e73f 100755 --- a/bin/docker-entrypoint +++ b/bin/docker-entrypoint @@ -7,7 +7,7 @@ worker() { QUEUES=${QUEUES:-queries,scheduled_queries,celery} echo "Starting $WORKERS_COUNT workers for queues: $QUEUES..." - exec /usr/local/bin/celery worker --app=redash.worker -c$WORKERS_COUNT -Q$QUEUES -linfo --maxtasksperchild=10 -Ofair + exec /usr/local/bin/celery worker --app=redash.worker -c$WORKERS_COUNT -Q$QUEUES -linfo --max-tasks-per-child=10 -Ofair } scheduler() { @@ -17,7 +17,7 @@ scheduler() { echo "Starting scheduler and $WORKERS_COUNT workers for queues: $QUEUES..." - exec /usr/local/bin/celery worker --app=redash.worker --beat -c$WORKERS_COUNT -Q$QUEUES -linfo --maxtasksperchild=10 -Ofair + exec /usr/local/bin/celery worker --app=redash.worker --beat -c$WORKERS_COUNT -Q$QUEUES -linfo --max-tasks-per-child=10 -Ofair } server() { From 26bda80d7850c28ebe6286f7a16e76fe904e6cf6 Mon Sep 17 00:00:00 2001 From: Jason Thomas Date: Mon, 9 Apr 2018 17:30:29 -0400 Subject: [PATCH 2/4] Set --max-memory-per-child to 1/4th of total system memory --- bin/docker-entrypoint | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/bin/docker-entrypoint b/bin/docker-entrypoint index eed8c0e73f..da1d91ddd2 100755 --- a/bin/docker-entrypoint +++ b/bin/docker-entrypoint @@ -5,9 +5,10 @@ worker() { /app/manage.py db upgrade WORKERS_COUNT=${WORKERS_COUNT:-2} QUEUES=${QUEUES:-queries,scheduled_queries,celery} + MAX_MEMORY=$(($(/usr/bin/awk '/MemTotal/ {print $2}' /proc/meminfo)/4)) echo "Starting $WORKERS_COUNT workers for queues: $QUEUES..." - exec /usr/local/bin/celery worker --app=redash.worker -c$WORKERS_COUNT -Q$QUEUES -linfo --max-tasks-per-child=10 -Ofair + exec /usr/local/bin/celery worker --app=redash.worker -c$WORKERS_COUNT -Q$QUEUES -linfo --max-tasks-per-child=10 --max-memory-per-child=$MEMORY -Ofair } scheduler() { From 5f143059680b0da5b8af709b7e04f434f2e1e100 Mon Sep 17 00:00:00 2001 From: Jason Thomas Date: Mon, 9 Apr 2018 17:32:59 -0400 Subject: [PATCH 3/4] Split exec command over multiple lines --- bin/docker-entrypoint | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/bin/docker-entrypoint b/bin/docker-entrypoint index da1d91ddd2..1d14cae605 100755 --- a/bin/docker-entrypoint +++ b/bin/docker-entrypoint @@ -8,7 +8,10 @@ worker() { MAX_MEMORY=$(($(/usr/bin/awk '/MemTotal/ {print $2}' /proc/meminfo)/4)) echo "Starting $WORKERS_COUNT workers for queues: $QUEUES..." - exec /usr/local/bin/celery worker --app=redash.worker -c$WORKERS_COUNT -Q$QUEUES -linfo --max-tasks-per-child=10 --max-memory-per-child=$MEMORY -Ofair + exec /usr/local/bin/celery worker --app=redash.worker -c$WORKERS_COUNT -Q$QUEUES -linfo \ + --max-tasks-per-child=10 \ + --max-memory-per-child=$MEMORY \ + -Ofair } scheduler() { @@ -18,7 +21,9 @@ scheduler() { echo "Starting scheduler and $WORKERS_COUNT workers for queues: $QUEUES..." - exec /usr/local/bin/celery worker --app=redash.worker --beat -c$WORKERS_COUNT -Q$QUEUES -linfo --max-tasks-per-child=10 -Ofair + exec /usr/local/bin/celery worker --app=redash.worker --beat -c$WORKERS_COUNT -Q$QUEUES -linfo \ + --max-tasks-per-child=10 \ + -Ofair } server() { From 5bc0cb4392eadf1414fc43836b758ed9453f574b Mon Sep 17 00:00:00 2001 From: Jason Thomas Date: Tue, 10 Apr 2018 11:56:19 -0400 Subject: [PATCH 4/4] Fix memory variable typo --- bin/docker-entrypoint | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bin/docker-entrypoint b/bin/docker-entrypoint index 1d14cae605..df9bea96a9 100755 --- a/bin/docker-entrypoint +++ b/bin/docker-entrypoint @@ -10,7 +10,7 @@ worker() { echo "Starting $WORKERS_COUNT workers for queues: $QUEUES..." exec /usr/local/bin/celery worker --app=redash.worker -c$WORKERS_COUNT -Q$QUEUES -linfo \ --max-tasks-per-child=10 \ - --max-memory-per-child=$MEMORY \ + --max-memory-per-child=$MAX_MEMORY \ -Ofair }