Il 12/07/2015 19:26, enrico franchi ha scritto:
Tipo... 90.000 connessioni aperte simultaneamente? Ma dai, diciamo
proprio di no. Non e' che non *puoi* farlo. E' che e' proprio una
cattiva idea farlo *a meno che non devi proprio farlo*. Tipicamente
tutte le volte che assumi che qualcosa sia gratuito e illimitato, prima
o poi qualcuno ti fara' scoprire che non e' cosi' (corollario: di solito
questa cosa accade in un'altra time-zone, quando uno avrebbe preferito
dormire invece di scoprire nuove cose).

Non c'è alcuna spiegazione su come deve funzionare il sistema di Carlos per cui sono stato molto generico. Ho giusto scritto cosa Go può raggiungere senza troppo sbattimento, chiaramente a scopo di paragone con Python.

Dipende da quale è il suo bisogno, ha parlato di alcune decine di migliaia di router da gestire. Se è un progetto serio avrà un budget e l'aiuto di colleghi, eventualmente un sistemista. Ovvio che si può fare distribuendo il carico su più server, che è probabilmente la soluzione migliore sotto diversi punti di vista, non c'è bisogno di correre di notte.

Questo tizio ha raggiunto 600.000 connessioni per processo con 16GB di RAM e il vecchio Go 1.0.3, che è molto più di 90.000 connessioni. Il GC da allora è migliorato sensibilmente:
https://groups.google.com/forum/#!searchin/golang-nuts/Garbage$20collecting/golang-nuts/S9goEGuoMRM/FZyd2M6uiVMJ

In generale e'
davvero molto piu' semplice usare logiche di pool rispetto che fare
90.000 goroutine.

Sono d'accordo. A Qihoo 360 hanno comunque raggiunto 1 milione di connessioni/server prima di passare ai pool, sempre con Go 1.0.3.

Dubito che Carlos debba creare un sistemone del genere, probabilmente gli basta molto ma molto meno.

Tipicamente se uno fa ste cose a cuor leggero la prima
cosa che scopre e' che ha un problema con il garbage collector, per dire.

Basta fare una spike solution per vedere quali numeri ottiene. Python mi pare meno adatto per queste cose, se lo deve fare con quello probabilmente si trova con limiti ancora maggiori.

     > Puoi usare tutte le CPU a disposizione fin da subito senza
    scrivere codice aggiuntivo.

Ora... il codice aggiuntivo e' piccolo, ma di per se Go 1.4 se non gli
dici altrimenti usa *una* CPU.

Hai ragione, è una riga di codice all'inizio del programma per dire quante CPU usare. Quello che intendo è che non deve modificare come funziona il proprio codice, tipo per usare il multiprocessing in Python.

Byez,
Davide Muzzarelli
_______________________________________________
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python

Rispondere a