2013-07-09 22 views
6

Jedną ze zmian wprowadzonych przez Ben Noordhius w Node v0.10.0 było "uhonorowanie zmiennej środowiskowej UV_THREADPOOL_SIZE" w systemie Unix. Wygląda na to, że plik źródłowy "threadpool.c" właśnie to robi.Czy ktoś próbował użyć zmiennej środowiskowej UV_THREADPOOL_SIZE?

Jeśli nie ustawię tej zmiennej env, mogę zweryfikować, że jestem ograniczony do wątku z 4 wątkami, który jest domyślnym rozmiarem wątku.

Ale ustawić tę zmienną środowiskową na moim serwerze Linux na 64, a następnie ponownie uruchomić węzeł, ale nadal wydaje się być ograniczony, pozornie do wielkości paczki o rozmiarze 5 ?!

Czy to ma dla nikogo sens? Dzięki!

+0

Jeśli masz mniej niż [wstawić docelowy wątek wielkość puli tutaj] rdzeni procesora, strzeżcie : http://stackoverflow.com/q/1718465/149444 –

+0

@RicardoStuven dodatkowe wątki powyżej 1 na rdzeń nadal będą pomocne w węźle, ponieważ libuv threadpool jest zwykle używany tylko dla IO, a nie dla obliczeń. Jest to adresowane w pierwszej linii [zaakceptowanej odpowiedzi] (http://stackoverflow.com/a/1718522/675721). –

Odpowiedz

7

Wygląda na to, że musisz ustawić go var z komendą node lub wewnątrz programu węzła. Wykonać ją lubię:

UV_THREADPOOL_SIZE=64 node 

lub modyfikują z programu:

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

Testowanie wątków:

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

Widzę tylko 6 wątków, gdy dodaję UV_THREADPOOL_SIZE do process.env. Czy chcesz przeczytać plik, aby go zobaczyć? – 4m1r

+0

@ 4m1r Tak, już o tym wspomniano. – user568109

+1

Umieszczenie 'export UV_THREADPOOL_SIZE = 64' w twoim' .bashrc' lub odpowiedniku również zastosuje go do dowolnego procesu węzła uruchomionego pod tą powłoką. – DuBistKomisch

Powiązane problemy