diff options
author | Alexandre Flament <alex@al-f.net> | 2023-11-12 17:46:34 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-11-12 16:46:34 +0000 |
commit | bd3f526859449abe7409ebdb15ba5a5ae20b346a (patch) | |
tree | add692ed0c967861e5a035cec1fc723fd8472d2e | |
parent | 7b1951aa97f05bf679d36574a16c8a85995cc9c1 (diff) |
Docker: add UWSGI_WORKERS and UWSGI_THREAD environment variables (#2992)
* Docker: add UWSGI_WORKERS and UWSGI_THREAD.
UWSGI_WORKERS specifies the number of process.
UWSGI_THREADS specifies the number of threads.
The Docker convention is to specify the whole configuration
through environment variables. While not done in SearXNG, these two
additional variables allows admins to skip uwsgi.ini
In additional, https://github.com/searxng/preview-environments starts Docker
without additional files through searxng-helm-chat.
Each instance consumes 1Go of RAM which is a lot especially when there are a
lot of instances / pull requests.
* [scripts] add environments UWSGI_WORKERS and UWSGI_THREADS
- UWSGI_WORKERS specifies the number of process.
- UWSGI_THREADS specifies the number of threads.
Templates for uwsgi scripts can be tested by::
UWSGI_WORKERS=8 UWSGI_THREADS=9 \
./utils/searxng.sh --cmd\
eval "echo \"$(cat utils/templates/etc/uwsgi/*/searxng.ini*)\""\
| grep "workers\|threads"
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
---------
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
Co-authored-by: Markus Heiser <markus.heiser@darmarit.de>
-rw-r--r-- | Dockerfile | 4 | ||||
-rw-r--r-- | dockerfiles/uwsgi.ini | 8 | ||||
-rw-r--r-- | docs/admin/installation-docker.rst | 3 | ||||
-rwxr-xr-x | utils/searxng.sh | 1 | ||||
-rw-r--r-- | utils/templates/etc/uwsgi/apps-archlinux/searxng.ini | 3 | ||||
-rw-r--r-- | utils/templates/etc/uwsgi/apps-archlinux/searxng.ini:socket | 3 | ||||
-rw-r--r-- | utils/templates/etc/uwsgi/apps-available/searxng.ini | 3 | ||||
-rw-r--r-- | utils/templates/etc/uwsgi/apps-available/searxng.ini:socket | 3 |
8 files changed, 25 insertions, 3 deletions
@@ -15,7 +15,9 @@ ENV INSTANCE_NAME=searxng \ MORTY_KEY= \ MORTY_URL= \ SEARXNG_SETTINGS_PATH=/etc/searxng/settings.yml \ - UWSGI_SETTINGS_PATH=/etc/searxng/uwsgi.ini + UWSGI_SETTINGS_PATH=/etc/searxng/uwsgi.ini \ + UWSGI_WORKERS=%k \ + UWSGI_THREADS=4 WORKDIR /usr/local/searxng diff --git a/dockerfiles/uwsgi.ini b/dockerfiles/uwsgi.ini index 2d315597..fc026b79 100644 --- a/dockerfiles/uwsgi.ini +++ b/dockerfiles/uwsgi.ini @@ -4,8 +4,12 @@ uid = searxng gid = searxng # Number of workers (usually CPU count) -workers = %k -threads = 4 +# default value: %k (= number of CPU core, see Dockerfile) +workers = $(UWSGI_WORKERS) + +# Number of threads per worker +# default value: 4 (see Dockerfile) +threads = $(UWSGI_THREADS) # The right granted on the created socket chmod-socket = 666 diff --git a/docs/admin/installation-docker.rst b/docs/admin/installation-docker.rst index c667c4f4..09471891 100644 --- a/docs/admin/installation-docker.rst +++ b/docs/admin/installation-docker.rst @@ -92,6 +92,9 @@ instance using `docker run <https://docs.docker.com/engine/reference/run/>`_: searxng/searxng 2f998.... # container's ID +The environment variables UWSGI_WORKERS and UWSGI_THREADS overwrite the default +number of UWSGI processes and UWSGI threads specified in `/etc/searxng/uwsgi.ini`. + Open your WEB browser and visit the URL: .. code:: sh diff --git a/utils/searxng.sh b/utils/searxng.sh index e04f87e1..197188a4 100755 --- a/utils/searxng.sh +++ b/utils/searxng.sh @@ -177,6 +177,7 @@ main() { case $1 in --getenv) var="$2"; echo "${!var}"; exit 0;; + --cmd) shift; "$@";; -h|--help) usage; exit 0;; install) sudo_or_exit diff --git a/utils/templates/etc/uwsgi/apps-archlinux/searxng.ini b/utils/templates/etc/uwsgi/apps-archlinux/searxng.ini index 351965a1..650c8cc3 100644 --- a/utils/templates/etc/uwsgi/apps-archlinux/searxng.ini +++ b/utils/templates/etc/uwsgi/apps-archlinux/searxng.ini @@ -47,6 +47,9 @@ plugin = python # default behaviour is for performance reasons. enable-threads = true +# Number of workers (usually CPU count) +workers = ${UWSGI_WORKERS:-%k} +threads = ${UWSGI_THREADS:-4} # plugin: python # -------------- diff --git a/utils/templates/etc/uwsgi/apps-archlinux/searxng.ini:socket b/utils/templates/etc/uwsgi/apps-archlinux/searxng.ini:socket index 0f36e417..eb122023 100644 --- a/utils/templates/etc/uwsgi/apps-archlinux/searxng.ini:socket +++ b/utils/templates/etc/uwsgi/apps-archlinux/searxng.ini:socket @@ -47,6 +47,9 @@ plugin = python # default behaviour is for performance reasons. enable-threads = true +# Number of workers (usually CPU count) +workers = ${UWSGI_WORKERS:-%k} +threads = ${UWSGI_THREADS:-4} # plugin: python # -------------- diff --git a/utils/templates/etc/uwsgi/apps-available/searxng.ini b/utils/templates/etc/uwsgi/apps-available/searxng.ini index caefdf0b..7d367d9e 100644 --- a/utils/templates/etc/uwsgi/apps-available/searxng.ini +++ b/utils/templates/etc/uwsgi/apps-available/searxng.ini @@ -50,6 +50,9 @@ plugin = python3,http # default behaviour is for performance reasons. enable-threads = true +# Number of workers (usually CPU count) +workers = ${UWSGI_WORKERS:-%k} +threads = ${UWSGI_THREADS:-4} # plugin: python # -------------- diff --git a/utils/templates/etc/uwsgi/apps-available/searxng.ini:socket b/utils/templates/etc/uwsgi/apps-available/searxng.ini:socket index 516787be..2f95fab7 100644 --- a/utils/templates/etc/uwsgi/apps-available/searxng.ini:socket +++ b/utils/templates/etc/uwsgi/apps-available/searxng.ini:socket @@ -50,6 +50,9 @@ plugin = python3,http # default behaviour is for performance reasons. enable-threads = true +# Number of workers (usually CPU count) +workers = ${UWSGI_WORKERS:-%k} +threads = ${UWSGI_THREADS:-4} # plugin: python # -------------- |