» »

uWSGI config | Pohitritev Python web aplikacije

uWSGI config | Pohitritev Python web aplikacije

HotBurek ::

Evo, sem malo potestiral uwsgi config in prišel do ugotovitve, da property processes "občutno" pohitri response time.

Primerjal sem processes = 1 in 8.

Dokumentacija: https://uwsgi-docs.readthedocs.io/en/la...

Pri processes = 1 gre vse ena po ena; šele ko se prvi response konča, se lahko naslednji request začne. Kar dosti premza loudanje CSS/JS fajlov po tem, ko se vrne prvi HTML response. V mojem primeru je response time nekje 300~400ms in za vsak CSS/JS file se toliko ms doda.

Pri processes = 8, pa se lahko reuqesti izvajajo vzporedno. Po prvem HTML responsu, se lahko naredi več hkratnih requestov (CSS, JS ...) in se loudanje celotne strani pohitri. Od oka v mojem primeru 30~40% hitreje oz. pol sekunde prihranka na sekundo in pol.


Takole se vidi v browserju:



Gut tool je tudi uwsgitop, kjer se da delat monitoring uwsgi requestov.
https://github.com/xrmx/uwsgitop

Tool se požene tako: /usr/bin/python3.7 /home/user1/uwsgitop http://127.0.0.1:1717
(Ob predpostavki, da je v configu vnešen stats in stats-http, ter da je master nastavljen na true.)

Tole je test z ab tool-om (apache2-utils), prikaz CPU obremenitve (htop), ter uwsgitop monitor. Kul je, ker se requesti enakomerno razdelijo na 8 procesov.



Vrednost 8 za processes sem dal po občutku (CPU je 2 x 4 jedra). Testiral sem še processes = 64 in processes = 8, threads = 4, pa so bili rezultati isti, kot če je proc=8, thre=0.

Tole je primerjava ab testrun-ov, kjer je config processes = 1 (levo, 3 req/sec), ter 8 (desno, 19 req/sec). Se prav 6 kratna pohitritev ob 100% load-u.




Ter sample uwsgi config, če kdo potrebuje.

[uwsgi]

# plugins
plugins = cgi

# socket
socket = 127.0.0.1:1234

# cgi part
cgi = /var/www/some-site.cum/
cgi-allowed-ext = .py
cgi-helper = .py = python3.7

# processes config
master = true
processes = 8
threads = 0

# so that process can access nginx created body files
uid = nginx
# https://stackoverflow.com/questions/54708301/linux-client-body-in-file-only-how-to-set-file-permissions-for-the-temp-file

# stats
stats = 127.0.0.1:1717
stats-http = true
# https://raw.githubusercontent.com/xrmx/uwsgitop/master/uwsgitop
root@debian:/# iptraf-ng
fatal: This program requires a screen size of at least 80 columns by 24 lines
Please resize your window
  • spremenilo: HotBurek ()


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

[JS] Event, ko se stran naloži po "back" gumbu?

Oddelek: Programiranje
292288 (1556) Spura
»

Postavitev mySQL

Oddelek: Programiranje
92086 (1664) M01O
»

Python v Wordpress

Oddelek: Programiranje
81234 (1029) Halfdead987
»

Kako narediti request z "\" v URL-ju

Oddelek: Programiranje
172019 (1294) Horejšio
»

Apache - localhost JA, IP naslov NE

Oddelek: Omrežja in internet
182616 (2475) ManDriver

Več podobnih tem