> > io sono convinto che se il modello resta round robbin puro, anche se > raddoppiassi i processi avrei solo dimezzato la probabilità di incapare in > una chiamata "lunga", mentre se potessi evitare di passare chiamate ad un > processo che sta lavorando eviterei proprio questa cosa. > > >> 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). > > le chiamate lunghe non sono chiamate che a random prendono tanto tempo, > sono > chiamate che "fanno molte cose" probabilmente non ottimizzate, ma sulle > quali io non ho diretto controllo (sono inizializzazioni mensili di alcune > posizioni). > > Grazie per il suggeriemnto > sandro > *:-)
Nginx non puo' farlo (vedi pero' nota sotto) L'approccio migliore (o meglio diciamo quello risolutivo) e' che i processi usino lo stesso socket, puoi provare il plugin tornado di uWSGI: http://uwsgi-docs.readthedocs.org/en/latest/Tornado.html ma non e' compilato di default (per motivi altamente tecnici: ovvero odio la programmazione callback based e non voglio incentivarla ulteriormente ;) anche gunicorn ha un worker model per tornado ma e' deprecato (ma presumo funzioni ancora) Nota: Se abbassi la listen queue del socket dentro tornado a 1 (in alcuni kernel puoi metterla anche a 0 che sarebeb addirittura meglio), otterrai subito un errore in caso di worker occupato e nginx passera' la richiesta al backend successivo. E' un buon trucco (anche se poco diffuso) nel tuo caso specifico. Altro approccio e' ridurre il proxy_connect_timeout, ma trovare il giusto compromesso sul valore e' dura -- Roberto De Ioris http://unbit.it _______________________________________________ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python