[Python] Deploy con nginx e proxy_pass - epilogo

Alessandro Dentella sandro a e-den.it
Gio 16 Gen 2014 00:40:43 CET


On Sat, Jan 04, 2014 at 12:21:30PM +0100, Manlio Perillo wrote:
> On 03/01/2014 12:50, Roberto De Ioris wrote:
> >[...]
> >provate a ridurre a 3 secondi il proxy_connect_timeout di nginx,
> 
> Dato che Linux ignora l'hint sulla backlog, il parametro su cui agire è
> proxy_send_timeout.
> 
> Sul wiki di Nginx c'è un commento appropriato riguardo
> proxy_connect_timeout:
> http://wiki.nginx.org/HttpProxyModule#proxy_connect_timeout
> http://wiki.nginx.org/HttpProxyModule#proxy_read_timeout
> 
> Impostare proxy_send_timeout potrebbe non essere efficace, a causa
> del buffering effettuato dal kernel.  In questo caso occorre
> modificare proxy_read_timeout, ma va fatto con cautela per evitare
> di mandare in timeout richieste legittime (ma semplicemente lente).
> In alternativa si può provare a modificare, dall'applicazione
> Python, SO_RCVBUF.


Purtroppo anche la modifica del send_timeout non ha sortito alcun
effetto. Non ho provato a modifcare SO_RCVBUF.

Ho alla fine preso una strada completamente differente che però in concreto
ha dati i risultati desiderati.

Ho deciso di creare 2 pool di processi (upstream) differenti uno per i
processi lenti ed uno per gli altri.

Dal momento che le chiamate lente hanno  URL ben definiti, ho deciso di
redirigere queste chiamate su un pool di processi differente. In questo modo
so per certo che una chiamata veloce non sarà mai rallentata da una lenta e,
semplicemnete aumentando i processi lenti posso arrivare a sincerarmi che
nessun processo lento abbia una probabilità significativa di trovarsi in
coda ad un altro processo lento (da momento che sono relativamente pochi al
giorno).

Ora possiamo dedicarci a capire cosa hanno di sbagliato i processi lenti...


Grazie a Manlio e Roberto per l'aiuto offerto

sandro
 


-- 
Sandro Dentella  *:-)
http://www.reteisi.org             Soluzioni libere per le scuole
http://sqlkit.argolinux.org        SQLkit home page - PyGTK/python/sqlalchemy





Maggiori informazioni sulla lista Python