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).
This commit is contained in:
parent
6de0a74257
commit
82541536af
4 changed files with 12 additions and 2 deletions
|
@ -10,6 +10,12 @@ BUILD_INFO=latest
|
||||||
# otherwise the port specified here will be publicly accessible
|
# otherwise the port specified here will be publicly accessible
|
||||||
PORT=8080
|
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
|
# URL base to run szurubooru under
|
||||||
# See "Additional Features" section in INSTALL.md
|
# See "Additional Features" section in INSTALL.md
|
||||||
BASE_URL=/
|
BASE_URL=/
|
||||||
|
|
|
@ -21,6 +21,7 @@ services:
|
||||||
#POSTGRES_DB: defaults to same as POSTGRES_USER
|
#POSTGRES_DB: defaults to same as POSTGRES_USER
|
||||||
#POSTGRES_PORT: 5432
|
#POSTGRES_PORT: 5432
|
||||||
#LOG_SQL: 0 (1 for verbose SQL logs)
|
#LOG_SQL: 0 (1 for verbose SQL logs)
|
||||||
|
THREADS:
|
||||||
volumes:
|
volumes:
|
||||||
- "${MOUNT_DATA}:/data"
|
- "${MOUNT_DATA}:/data"
|
||||||
- "./server/config.yaml:/opt/app/config.yaml"
|
- "./server/config.yaml:/opt/app/config.yaml"
|
||||||
|
|
|
@ -83,6 +83,9 @@ ARG PORT=6666
|
||||||
ENV PORT=${PORT}
|
ENV PORT=${PORT}
|
||||||
EXPOSE ${PORT}
|
EXPOSE ${PORT}
|
||||||
|
|
||||||
|
ARG THREADS=4
|
||||||
|
ENV THREADS=${THREADS}
|
||||||
|
|
||||||
VOLUME ["/data/"]
|
VOLUME ["/data/"]
|
||||||
|
|
||||||
ARG DOCKER_REPO
|
ARG DOCKER_REPO
|
||||||
|
|
|
@ -4,5 +4,5 @@ cd /opt/app
|
||||||
|
|
||||||
alembic upgrade head
|
alembic upgrade head
|
||||||
|
|
||||||
echo "Starting szurubooru API on port ${PORT}"
|
echo "Starting szurubooru API on port ${PORT} - Running on ${THREADS} threads"
|
||||||
exec waitress-serve-3 --port ${PORT} szurubooru.facade:app
|
exec waitress-serve-3 --port ${PORT} --threads ${THREADS} szurubooru.facade:app
|
||||||
|
|
Loading…
Reference in a new issue