Override uwsgi default config
- Overrode uwsgi default configs to improve stability and performance. - Increased mas number of worker processes to increase capacity and performance. - Enabled uwsgi cheaper subsystem to scale worker processes dynamically. - Uplifted uwsgi to the latest release to bring bug fixes and improvements since 2018. Upgraded uwsgi to bring in bug fixes since 2018. For background information for this change please see: https://uwsgi-docs.readthedocs.io/en/latest/ThingsToKnow.html Change-Id: If067e9786e9dbbd39ef832dea6f51aa5523af4d7
This commit is contained in:
parent
841d0ee2c8
commit
a5e57879ab
@ -62,6 +62,26 @@ spec:
|
||||
value: {{ .Values.conf.uwsgi.workers | quote }}
|
||||
- name: 'SHIPYARD_API_THREADS'
|
||||
value: {{ .Values.conf.uwsgi.threads | quote }}
|
||||
- name: 'SHIPYARD_API_CHEAPER_ALGO'
|
||||
value: {{ .Values.conf.uwsgi.cheaper_algo | quote }}
|
||||
- name: 'SHIPYARD_API_CHEAPER'
|
||||
value: {{ .Values.conf.uwsgi.cheaper | quote }}
|
||||
- name: 'SHIPYARD_API_CHEAPER_INITIAL'
|
||||
value: {{ .Values.conf.uwsgi.cheaper_initial | quote }}
|
||||
- name: 'SHIPYARD_API_CHEAPER_STEP'
|
||||
value: {{ .Values.conf.uwsgi.cheaper_step | quote }}
|
||||
- name: 'SHIPYARD_API_CHEAPER_OVERLOAD'
|
||||
value: {{ .Values.conf.uwsgi.cheaper_overload | quote }}
|
||||
- name: 'SHIPYARD_API_CHEAPER_BUSYNESS_MULTIPLIER'
|
||||
value: {{ .Values.conf.uwsgi.cheaper_busyness_multiplier | quote }}
|
||||
- name: 'SHIPYARD_API_CHEAPER_BUSYNESS_MIN'
|
||||
value: {{ .Values.conf.uwsgi.cheaper_busyness_min | quote }}
|
||||
- name: 'SHIPYARD_API_CHEAPER_BUSYNESS_MAX'
|
||||
value: {{ .Values.conf.uwsgi.cheaper_busyness_max | quote }}
|
||||
- name: 'SHIPYARD_API_CHEAPER_BUSYNESS_BACKLOG_ALERT'
|
||||
value: {{ .Values.conf.uwsgi.cheaper_busyness_backlog_alert | quote }}
|
||||
- name: 'SHIPYARD_API_CHEAPER_BUSYNESS_BACKLOG_STEP'
|
||||
value: {{ .Values.conf.uwsgi.cheaper_busyness_backlog_step | quote }}
|
||||
image: {{ .Values.images.tags.shipyard }}
|
||||
imagePullPolicy: {{ .Values.images.pull_policy }}
|
||||
{{ tuple $envAll $envAll.Values.pod.resources.shipyard_api | include "helm-toolkit.snippets.kubernetes_resources" | indent 10 }}
|
||||
|
@ -328,8 +328,20 @@ secrets:
|
||||
|
||||
conf:
|
||||
uwsgi:
|
||||
threads: 1
|
||||
workers: 4
|
||||
# for more info about these default overrides please read
|
||||
# https://uwsgi-docs.readthedocs.io/en/latest/ThingsToKnow.html
|
||||
threads: 1 # Number of threads per worker/process
|
||||
workers: 16 # maximum number of workers/processes
|
||||
cheaper_algo: busyness # Use cheaper busyness plugin for dynamic scaling of workers
|
||||
cheaper: 4 # Minimum number of workers allowed
|
||||
cheaper_initial: 8 # Workers created at startup
|
||||
cheaper_step: 4 # How many workers to spawn at a time
|
||||
cheaper_overload: 1 # Length of a cycle in seconds
|
||||
cheaper_busyness_multiplier: 60 # Cycles to wait before killing workers
|
||||
cheaper_busyness_min: 20 # Below this threshold, kill workers
|
||||
cheaper_busyness_max: 75 # Above this threshold, spawn new workers
|
||||
cheaper_busyness_backlog_alert: 40 # Spawn emergency workers if more than this many requests are waiting in the queue
|
||||
cheaper_busyness_backlog_step: 1 # Emergegency workers to create if there are too many requests in the queue
|
||||
policy:
|
||||
admin_create: role:admin or role:admin_ucp
|
||||
admin_read_access: rule:admin_create or role:admin_ucp_viewer
|
||||
|
@ -20,19 +20,57 @@ if [ "$1" = 'server' ]; then
|
||||
PORT=${PORT:-9000}
|
||||
HTTP_TIMEOUT=${HTTP_TIMEOUT:-600}
|
||||
# Number of uWSGI workers to handle API request
|
||||
SHIPYARD_API_WORKERS=${SHIPYARD_API_WORKERS:-"4"}
|
||||
SHIPYARD_API_WORKERS=${SHIPYARD_API_WORKERS:-"16"}
|
||||
#Threads per worker
|
||||
SHIPYARD_API_THREADS=${SHIPYARD_API_THREADS:-"1"}
|
||||
# use uwsgi cheaper-busyness plugin for dynamic worker scaling
|
||||
SHIPYARD_API_CHEAPER_ALGO=${SHIPYARD_API_CHEAPER_ALGO:-"busyness"}
|
||||
# Minimum number of workers allowed
|
||||
SHIPYARD_API_CHEAPER=${SHIPYARD_API_CHEAPER:-"4"}
|
||||
# Number of workers created at startup
|
||||
SHIPYARD_API_CHEAPER_INITIAL=${SHIPYARD_API_CHEAPER_INITIAL:-"8"}
|
||||
# How many workers to spawn each time
|
||||
SHIPYARD_API_CHEAPER_STEP=${SHIPYARD_API_CHEAPER_STEP:-"4"}
|
||||
# Length of a busyness cycle in seconds
|
||||
SHIPYARD_API_CHEAPER_OVERLOAD=${SHIPYARD_API_CHEAPER_OVERLOAD:-"1"}
|
||||
# How many cycles to wait before killing workers due to low load
|
||||
SHIPYARD_API_CHEAPER_BUSYNESS_MULTIPLIER=${SHIPYARD_API_CHEAPER_BUSYNESS_MULTIPLIER:-"60"}
|
||||
# Below this threshold, kill workers (if stable for multiplier cycles)
|
||||
SHIPYARD_API_CHEAPER_BUSYNESS_MIN=${SHIPYARD_API_CHEAPER_BUSYNESS_MIN:-"20"}
|
||||
# Above this threshold, spawn new workers
|
||||
SHIPYARD_API_CHEAPER_BUSYNESS_MAX=${SHIPYARD_API_CHEAPER_BUSYNESS_MAX:-"75"}
|
||||
# Spawn emergency workers if more than this many requests are waiting in the queue
|
||||
SHIPYARD_API_CHEAPER_BUSYNESS_BACKLOG_ALERT=${SHIPYARD_API_CHEAPER_BUSYNESS_BACKLOG_ALERT:-"40"}
|
||||
# How many emergegency workers to create if there are too many requests in the queue
|
||||
SHIPYARD_API_CHEAPER_BUSYNESS_BACKLOG_STEP=${SHIPYARD_API_CHEAPER_BUSYNESS_BACKLOG_STEP:-"1"}
|
||||
# Start shipyard application
|
||||
# for more info about these default overrides please read
|
||||
# https://uwsgi-docs.readthedocs.io/en/latest/ThingsToKnow.html
|
||||
exec uwsgi \
|
||||
--http :${PORT} \
|
||||
--paste config:/etc/shipyard/api-paste.ini \
|
||||
--enable-threads \
|
||||
-L \
|
||||
--pyargv "--config-file /etc/shipyard/shipyard.conf" \
|
||||
--threads $SHIPYARD_API_THREADS \
|
||||
--workers $SHIPYARD_API_WORKERS \
|
||||
--http-timeout ${HTTP_TIMEOUT}
|
||||
--threads ${SHIPYARD_API_THREADS} \
|
||||
--workers ${SHIPYARD_API_WORKERS} \
|
||||
--http-timeout ${HTTP_TIMEOUT} \
|
||||
--strict \
|
||||
--master \
|
||||
--vacuum \
|
||||
--single-interpreter \
|
||||
--die-on-term \
|
||||
--need-app \
|
||||
--cheaper-algo ${SHIPYARD_API_CHEAPER_ALGO} \
|
||||
--cheaper ${SHIPYARD_API_CHEAPER} \
|
||||
--cheaper-initial ${SHIPYARD_API_CHEAPER_INITIAL} \
|
||||
--cheaper-step ${SHIPYARD_API_CHEAPER_STEP} \
|
||||
--cheaper-overload ${SHIPYARD_API_CHEAPER_OVERLOAD} \
|
||||
--cheaper-busyness-multiplier ${SHIPYARD_API_CHEAPER_BUSYNESS_MULTIPLIER} \
|
||||
--cheaper-busyness-min ${SHIPYARD_API_CHEAPER_BUSYNESS_MIN} \
|
||||
--cheaper-busyness-max ${SHIPYARD_API_CHEAPER_BUSYNESS_MAX} \
|
||||
--cheaper-busyness-backlog-alert ${SHIPYARD_API_CHEAPER_BUSYNESS_BACKLOG_ALERT} \
|
||||
--cheaper-busyness-backlog-step ${SHIPYARD_API_CHEAPER_BUSYNESS_BACKLOG_STEP}
|
||||
else
|
||||
CMD="shipyard"
|
||||
# Execute shipyard command
|
||||
|
@ -34,7 +34,7 @@ requests==2.20.0
|
||||
setuptools==40.4.1
|
||||
SQLAlchemy==1.3.15
|
||||
ulid==1.1
|
||||
uwsgi==2.0.17
|
||||
uwsgi~=2.0.19.1
|
||||
|
||||
# To support profiling in non-prod
|
||||
Werkzeug==0.16.1
|
||||
|
Loading…
x
Reference in New Issue
Block a user