[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