2013-07-09 13 views
6

Una delle modifiche apportate da Ben Noordhius nel nodo v0.10.0 era di "onorare la variabile di ambiente UV_THREADPOOL_SIZE" in Unix. Il file sorgente "threadpool.c" sembra fare proprio questo.Qualcuno ha provato a utilizzare la variabile di ambiente UV_THREADPOOL_SIZE?

Se non si imposta questa variabile env, posso verificare che sono limitato a un threadpool di 4 thread, che è la dimensione predefinita del threadpool.

Ma ho impostato questa variabile di ambiente sul mio server Linux a 64 e poi riavvio nodo, ma mi sembra ancora essere limitato, apparentemente a un threadpool di dimensioni di 5 ?!

Ha senso per qualcuno? Grazie!

+0

Se hai meno di [inserire il vostro target filo dimensioni piscina qui] core della CPU, attenzione : http://stackoverflow.com/q/1718465/149444 –

+0

@RicardoStuven thread aggiuntivi oltre 1 per core saranno ancora utili nel nodo, poiché il threadpool della libuv è generalmente utilizzato solo per IO e non per il calcolo. Questo è indirizzato nella prima riga di [risposta accettata] (http://stackoverflow.com/a/1718522/675721). –

risposta

7

Sembra che sia necessario impostare var con il comando node o all'interno del programma del nodo. Eseguirlo come:

UV_THREADPOOL_SIZE=64 node 

o modificare dal programma:

process.env.UV_THREADPOOL_SIZE=64 
//then execute some function that requires threadpool 
require('fs').readFile('testing',function(){}); 

discussioni Testing:

ps -Lef | grep "\<node\>" | wc -l 
67 
+0

Vedo solo 6 thread quando aggiungo UV_THREADPOOL_SIZE a process.env. Hai bisogno di leggere il file per vederlo? – 4m1r

+0

@ 4m1r Sì, l'ho già detto. – user568109

+1

Mettendo 'export UV_THREADPOOL_SIZE = 64' in' .bashrc' o equivalente lo applicherà anche a qualsiasi processo di nodo avviato sotto quella shell. – DuBistKomisch

Problemi correlati