summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornoirscape <neko@catgirlsin.space>2022-02-12 22:16:13 +0100
committerShyam Sunder <sgsunder1@gmail.com>2022-02-14 17:33:23 -0500
commit82541536afd95ebbbb72b1983caae77b67eb8b2d (patch)
tree5bc18a029ef052797992342000bf1cfe61935ec3
parent6de0a742570058365753266d6b8f43b354de9b11 (diff)
Make waitress thread count configurable.
This should fix most scaling problems without needing to start more server instances. By default, waitress maintains at most 4 threads. This works fine if the database is small (sub 100k posts) but causes a large Task queue depth to occur if the database is larger. Letting users increase the amount of threads means that one server instance is able to handle more requests without locking up the rest of the site. This adds a new environment variable to .env, THREADS, which can be used to configure the amount of threads to start and is by default set to 4 (the default amount used by waitress).
-rw-r--r--doc/example.env6
-rw-r--r--docker-compose.yml1
-rw-r--r--server/Dockerfile3
-rwxr-xr-xserver/docker-start.sh4
4 files changed, 12 insertions, 2 deletions
diff --git a/doc/example.env b/doc/example.env
index 59e1e85..303a25e 100644
--- a/doc/example.env
+++ b/doc/example.env
@@ -10,6 +10,12 @@ BUILD_INFO=latest
# otherwise the port specified here will be publicly accessible
PORT=8080
+# How many waitress threads to start
+# 4 is the default amount of threads. If you experience performance
+# degradation with a large number of posts, increasing this may
+# improve performance, since waitress is most likely clogging up with Tasks.
+THREADS=4
+
# URL base to run szurubooru under
# See "Additional Features" section in INSTALL.md
BASE_URL=/
diff --git a/docker-compose.yml b/docker-compose.yml
index 1da23bd..38e08b9 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -21,6 +21,7 @@ services:
#POSTGRES_DB: defaults to same as POSTGRES_USER
#POSTGRES_PORT: 5432
#LOG_SQL: 0 (1 for verbose SQL logs)
+ THREADS:
volumes:
- "${MOUNT_DATA}:/data"
- "./server/config.yaml:/opt/app/config.yaml"
diff --git a/server/Dockerfile b/server/Dockerfile
index aac0a65..a13e230 100644
--- a/server/Dockerfile
+++ b/server/Dockerfile
@@ -83,6 +83,9 @@ ARG PORT=6666
ENV PORT=${PORT}
EXPOSE ${PORT}
+ARG THREADS=4
+ENV THREADS=${THREADS}
+
VOLUME ["/data/"]
ARG DOCKER_REPO
diff --git a/server/docker-start.sh b/server/docker-start.sh
index 34a0e49..eebef1c 100755
--- a/server/docker-start.sh
+++ b/server/docker-start.sh
@@ -4,5 +4,5 @@ cd /opt/app
alembic upgrade head
-echo "Starting szurubooru API on port ${PORT}"
-exec waitress-serve-3 --port ${PORT} szurubooru.facade:app
+echo "Starting szurubooru API on port ${PORT} - Running on ${THREADS} threads"
+exec waitress-serve-3 --port ${PORT} --threads ${THREADS} szurubooru.facade:app