[AMI] Как мне выполнить один процесс Node.js? - PullRequest
0 голосов
/ 22 октября 2018

Конечно, я знаю, что Node.js - это однопоточный язык.Но что-то не так ...

Среда:

ОС:

NAME="Amazon Linux AMI"
VERSION="2018.03"

Node.js:

$ node -v
v8.12.0

(устанавливается с помощью nodebrew)

Я выполнил это.

hoge.js:

$ cat  hoge.js
for (let i = 0; i < 10000; i++) {
  console.log('hoge');
}

ВЫХОД:

$ node hoge.js
hoge
hoge
hoge
hoge
hoge
.
.

htop (интерактивный просмотрщик процессов, такой как команда top):

PID   USER     PRI NI VIRT RES   SHR  S  CPU%  MEM%  TIME+ Command
10001 ec2-user 20  0  971M 149M 22188 R  54.0  7.5 0:05.79 node hoge.js
10002 ec2-user 20  0  971M 149M 22188 S  0.0   7.5 0:00.03 node hoge.js
10003 ec2-user 20  0  971M 149M 22188 S  0.0   7.5 0:00.07 node hoge.js
10004 ec2-user 20  0  971M 149M 22188 S  0.0   7.5 0:00.07 node hoge.js
10005 ec2-user 20  0  971M 149M 22188 S  0.0   7.5 0:00.07 node hoge.js

Что происходит?

Я хочу выполнить это с ОДИН процесс.Есть ли файл конфигурации?

Спасибо.

1 Ответ

0 голосов
/ 22 октября 2018

Вероятно, это много потоков одного процесса.

По умолчанию htop также показывает потоки, а не процессы.Вы можете изменить это поведение в его настройках («Показывать потоки пользовательского пространства» / «Цветные потоки пользовательского пространства»).

Хотя Node является однопоточным, поскольку выполняется пользовательский код, у него все еще есть внутренние потоки, которые необходимо выполнить.например, сборка мусора или другие вещи.

...