Il 03 dicembre 2011 16:23, Manlio Perillo <[email protected]> ha scritto: >> Una cosa di questo tipo non avrebbe ugualmente funzionato? >> >> # pseudo codice >> import multiprocessing >> from somehttpd import HTTPServer >> >> CPUS = multiprocessing.cpu_count() >> server = HTTPServer() >> # create child processes to act as workers >> for x in range(CPUS - 1): >> Process(target=server.serve_forever).start() >> # main process also acts as a worker >> server.serve_forever() >> >> >> Se si, ti saresti evitato l'onere di ascoltare su porte multiple e >> ovviamente tutta la complessità aggiuntiva che ne deriva. >> > > Questo è essenzialmente l'approccio usato da Nginx. > > Però c'è un dettaglio subdolo: con questo metodo ciascun processo figlio > chiama la accept sullo stesso file descriptor ereditato dal padre e ci > potrebbero essere dei problemi subdoli. > > Ad esempio il problema chiamato "thundering herd" oppure (ma su questo > non riesco a trovare dei riferimenti, l'ho letto dall'autore di Nginx) > il sistema operativo potrebbe **non** distribuire il carico equamente su > tutti i sotto processi. > > > Ciao Manlio
Riusciresti a darmi qualche dettaglio in più? Sono lì lì per portare questa modifica in produzione. Effettuando dei test finora non mi è sembrato di notare alcunchè di "subdolo" o fuori dalla norma. --- Giampaolo http://code.google.com/p/pyftpdlib/ http://code.google.com/p/psutil/ _______________________________________________ Python mailing list [email protected] http://lists.python.it/mailman/listinfo/python
