<div dir="ltr"><div class="gmail_extra"><br><div class="gmail_quote">2015-07-11 11:40 GMT+01:00 Davide Muzzarelli <span dir="ltr"><<a href="mailto:d.muzzarelli@dav-muz.net" target="_blank">d.muzzarelli@dav-muz.net</a>></span>:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">Ogni gorutine (simile ai thread) occupa 4kb. In 350MB di RAM puoi gestire circa 90.000 connessioni aperte simultaneamente. </blockquote></div><br>Come dire... occhio pero'. Tutte le volte nella storia dell'informatica che qualcuno ha convinto qualcun altro che qualcosa fosse essenzialmente gratuito, ci sono stati tanti ingegneri a correrre la notte e tanti sistemi riscritti.</div><div class="gmail_extra"><br></div><div class="gmail_extra">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). </div><div class="gmail_extra"><br></div><div class="gmail_extra">Vuoi tenere 90K connessioni aperte? Metti conto che: TCP ha bisogno di bookeeping nel kernel. 90K descrittori sono proprio tanti. A questo punto devi tenere traccia di quali connessioni sono buone e quali non sono buone (cosa non banale... TCP Keepalive offre qualcosa di diverso e farlo a mano e' noioso... HTTP keepalive e' una cosa diversa ancora, ma e' piuttosto delicata e spesso si spacca... in pratica non e' un caso come funzionano i vari pool di connessioni http -- che per dire, Go stesso offre senza dirlo in modo troppo esplicito). In generale e' davvero molto piu' semplice usare logiche di pool rispetto che fare 90.000 goroutine. 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.</div><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div class="gmail_extra"><br></div><div class="gmail_extra">> Puoi usare tutte le CPU a disposizione fin da subito senza scrivere codice aggiuntivo.</div></blockquote><div class="gmail_extra"><br></div><div class="gmail_extra">Ora... il codice aggiuntivo e' piccolo, ma di per se Go 1.4 se non gli dici altrimenti usa *una* CPU.<br clear="all"><div><br></div>-- <br><div class="gmail_signature"> .<br>..: -enrico-</div>
</div></div>