Ho diverse app in esecuzione su uWSGI. Molti di loro crescono nell'uso della memoria nel tempo. Ho sempre attribuito questo a una perdita di memoria che non avevo rintracciato. Ma ultimamente ho notato che la crescita è piuttosto grossa. Mi chiedo se ogni blocco sia correlato con l'avvio di un processo.uWSGI avvia tutti i processi al momento dell'avvio?
uWSGI avvia tutti i processi all'avvio oppure ne avvia solo uno nuovo quando sono presenti richieste sufficienti per renderlo necessario?
Ecco un esempio di configurazione:
[uwsgi]
strict = true
wsgi-file = foo.py
callable = app
die-on-term = true
http-socket = :2345
master = true
enable-threads = true
thunder-lock = true
processes = 6
threads = 1
memory-report = true
aggiornamento: questo sembra rilevante: http://uwsgi-docs.readthedocs.org/en/latest/Cheaper.html
Vuol "lavoratore" significano la stessa cosa di "processo" (risposta sembra essere yes)? Se è così allora sembra che se voglio il numero di rimanere costante sempre, devo fare:
cheaper = 6
cheaper-initial = 6
processes = 6
Grazie!Sì, sapevo del caricamento dei moduli e di altre cose che influivano sulla crescita della memoria, mi stavo solo chiedendo il processo di avvio. Sai a cosa servono le impostazioni più economiche? –
Le impostazioni più economiche impediscono ai dipendenti di spawnare all'avvio, ma lo fanno alla prima richiesta. Ti permette di specificare quanti lavoratori saranno generati all'avvio, quanti lavoratori possono essere generati sulle richieste (se necessario) e se i lavoratori generati sulle richieste dovrebbero essere automaticamente uccisi se non più necessari. – GwynBleidD
È più economico il sistema predefinito utilizzato da uwsgi e queste impostazioni ne configurano il comportamento oppure è una modalità speciale che viene attivata quando si utilizzano le impostazioni? –