Rajoita CPU- ja muistinkäyttöä¶
Suositellussa Docker-pohjaisessa asetuksessa Gramps Web käyttää Gunicornia taustapalvelun tarjoamiseen ja Celeryä taustatehtäviin. Molemmissa tapauksissa useita työntekijäprosesseja voidaan suorittaa rinnakkain, mikä tekee sovelluksesta käyttäjän näkökulmasta responsiivisemman. Kuitenkin työntekijöiden määrän lisääminen lisää myös käytetyn RAM-muistin määrää (jopa silloin, kun sovellus on käyttämättömänä) ja pyyntöjen käsittelyn salliminen rinnakkain voi johtaa korkeaan CPU-käyttöön (erityisesti silloin, kun monet käyttäjät käyttävät sovellusta samanaikaisesti). Sekä Gunicorn että Celery sallivat rinnakkaisten työntekijöiden määrän rajoittamisen.
Hanki tietoa järjestelmästäsi¶
Linuxissa voit tarkistaa käytettävissä olevien ytimien määrän seuraavalla komennolla:
lscpu | grep CPU
Näet, kuinka paljon muistia ja swap-tilaa sinulla on käytettävissä, käytä
free -h
Gunicorn-työntekijöiden määrän rajoittaminen¶
Helpoin tapa asettaa Gunicorn-työntekijöiden määrä käytettäessä oletus Gramps Web Docker -kuvaa on asettaa ympäristömuuttuja GUNICORN_NUM_WORKERS, esimerkiksi määrittämällä se docker-compose.yml -tiedostossa,
"environment"-osion alle.
services:
grampsweb:
environment:
GUNICORN_NUM_WORKERS: 2
Katso Gunicornin dokumentaatiosta päättääksesi ihanteellisesta työntekijöiden määrästä.
Celery-työntekijöiden määrän rajoittaminen¶
Aseta Celery-työntekijöiden määrä mukauttamalla concurrency-asetusta Docker-compose-tiedostossa:
grampsweb_celery:
command: celery -A gramps_webapi.celery worker --loglevel=INFO --concurrency=2
Katso Celeryn dokumentaatiosta päättääksesi ihanteellisesta työntekijöiden määrästä.
Info
Jos concurrency-lippua ei ole määritetty (mikä oli tilanne Gramps Web -dokumentaatiossa ennen v2.5.0), se
oletusarvoisesti vastaa järjestelmän käytettävissä olevien CPU-ytimien määrää, mikä voi kuluttaa huomattavan määrän muistia.