[Python] web: sync vs. async

Manlio Perillo manlio.perillo a gmail.com
Mar 6 Dic 2011 22:16:19 CET


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Il 06/12/2011 19:43, Roberto De Ioris ha scritto:
> [...]
>> Per il "Thundering herd problem", trovi una breve descrizione su
>> Wikipedia:
>> http://en.wikipedia.org/wiki/Thundering_herd_problem
>>
>> Vedi anche:
>> http://www.citi.umich.edu/projects/linux-scalability/reports/accept.html
>>
>>
>> Il problema è menzionato anche nel libro "UNIX Network Programming".
>> In particolare, oltre al problema di prestazioni che per pochi processi
>> non dovrebbe essere preoccupante, c'è un altro problema con quello che
>> fai: chiamare accept sullo stesso file descriptor ereditato potrebbe
>> **non** funzionare su alcuni sistemi; in questi casi hai bosogno di
>> serializzare la chiamata con un lock o mutex (che è quello che,
>> opzionalmente, fa Nginx [1]).
>>
>> Ti consiglio di fare dei test e di documentarti meglio (io non so
>> nemmeno cosa è cambiato in versioni recenti di Linux).
>>
> 
> 
> accept() non e' piu' soggetta al thundering herd da un po', 

Ma occorre sempre serializzare le chiamate, oppure ora è come su FreeBSD?
Perchè su Nginx abilita accept_mutex di default.

> mentre
> epoll_wait() lo e', e pure di brutto.
>

Si, avevo letto qualcosa su epoll.

> [...]
>
> Ad oggi ne' io ne' i ragazzi di unicorn (server ruby di cui gunicorn e' il
> porting in python) abbiamo rilevato un impatto del thundering herd tale da
> doverlo gestire diversamente. Di idea completamente opposta i ragazzi di
> passenger che invece preferiscono gestire tutto in user space con una
> porta aperta per ogni processo. Evidentemente si sentono stra-sicuri del
> loro load-balancer interno, o sanno qualcosa che io non so :)
> 

Purtroppo non avuto modo di vedere in dettaglio il codice di questi
progetti.



Ciao  Manlio
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.10 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iEYEARECAAYFAk7ehiMACgkQscQJ24LbaUQPogCdFUzPjOLZwQZQ6/1CSpZxlEKv
RKkAn1V4B9WFz+7r6d78rmgXu2HkD1fb
=N7Bd
-----END PGP SIGNATURE-----


Maggiori informazioni sulla lista Python