[Python] Deploy con nginx e proxy_pass

Roberto De Ioris roberto a unbit.it
Mar 24 Dic 2013 09:19:19 CET


> Ciao a tutti,
>
> ho bisogno di capire una configurazione di un webs server nginx di un
> cliente che usa proxy_pass passando come destinatario
>
>     upstream produzione {
>         server 127.0.0.1:8080;
>         server 127.0.0.1:8081;
>         ...
>     }
>     proxy_pass http://produzione;
>
>
> Quello che vorrei capire è come funziona e se è configurabile il
> meccanismo
> di assegnazione della richiesta ai vari server.
>
> Il problema nasce dal fatto che hanno una applicazione fatta con tornado
> ma
> con chiamate non asincrone, ed una base di codice che si sono sviluppati
> negli anni e che non hanno il coraggio/determinazione di cambiare.
> il 99% delle funzioni prende meno di 1 secondo ma acunin prendono anche 10
> secondi fino a 25 e questo è accettabile.
>
> Il problema nasce dal fatto che in alcuni casi sperimentano dei blocchi.
>
> La mia sensazione (e qui paleso la mia ignoranza in merito) è che nginx
> faccia round robbin fra i 10 processi esistenti e non stia a guardare se
> hanno terminato o meno la precedente richiesta. Esiste un modo di forzare
> uno schema per cui vengano serviti solo i processi che non hanno in corso
> una elaborazione?
>
> NB: non esiste un problema di troppo carico, il server è sostanzialmente
>     sottosfruttato, il sito non ha un carico elevato
>
> Sono graditi anche puntatori a letture illuminanti...
>
> grazie
> sandro
> *:-)
> _______________________________________________
>

Nelle release > 1.3 di nginx puoi impostare il least connections come
algoritmo:

http://nginx.org/en/docs/http/ngx_http_upstream_module.html#least_conn

ma ho seri dubbi che il problema sia li', appena hai scritto "tornado con
chiamate non asincrone", hai praticamente descritto IL problema ;)

aggancia una strace ai processi tornado durante un blocco per vedere che
succede. Probabilmente non ci sara' molto da fare se non aggiungere altri
processi tornado (sempre che sia tollerabile dall'applicazione).




-- 
Roberto De Ioris
http://unbit.it


Maggiori informazioni sulla lista Python