Si potrebbe iniziare più di un instante di sottile se si può avere richieste simultanee da elaborare. Per gestire richieste simultanee (connessioni simultanee) è necessario un cluster di "sottile".
Sì, si può facilmente vedere questo:
proviamo un server singolo sottile
thin start -R fart.ru
Thin web server (v1.5.0 codename Knife)
Maximum connections set to 1024
Listening on 0.0.0.0:3000, CTRL+C to stop
controllo:
netstat -an | grep 300
tcp4 0 0 *.3000 *.* LISTEN
ok, abbiamo un sottile ascoltando su una porta.
Ora proviamo un assegno --servers 3
thin start -R fart.ru --servers 3
Starting server on 0.0.0.0:3000 ...
Starting server on 0.0.0.0:3001 ...
Starting server on 0.0.0.0:3002 ...
:
netstat -an | grep 300
tcp4 0 0 *.3002 *.* LISTEN
tcp4 0 0 *.3001 *.* LISTEN
tcp4 0 0 *.3000 *.* LISTEN
voilà avete 3 porta di ascolto.
ps -ef | grep thin
segnala 3 processi in esecuzione, ognuno può gestire una richiesta concorrente.
In definitiva per elaborare le richieste contemporaneamente è necessario avviare un cluster di proxy sottile e inverso per l'host virtuale, quindi caricare il carico della richiesta sui vari thin che si sono avviati.
Questo blogpost può fare il punto: Scaling Rails with Apache 2, mod_proxy_balancer and Thin Clusters
fonte
2012-11-26 19:45:31
Per quante richieste al secondo avete bisogno di server più sottili? –
citando http://www.amberbit.com/blog/2014/9/9/ruby-the-bad-parts/ Le prestazioni delle applicazioni multithread sono ancora limitate. L'interprete Ruby utilizza un meccanismo chiamato GIL (Global Interpreter Lock) che consente l'esecuzione di un solo thread alla volta, anche se eseguito su un sistema multiprocessore, ovvero se si dispone di un sistema quad-core, le risorse possono essere meglio utilizzate. In ogni caso, il test di carico e prestazioni è consigliato e utile per comprendere come questo può o meno essere applicabile all'ambiente dell'applicazione e al runtime. –
................. Grazie –