У вас есть опечатка в вашем файле YML, "target" должно быть "http://localhost:3000" (без завершающего символа '/').
Вот почему вы получаете HTTP 404 (НЕ НАЙДЕНО)вместо HTTP 200 (ОК)
Пожалуйста, обновите свой YML следующим образом и перезапустите тест:
{
"config": {
"target": "http://localhost:3000",
"phases": [
{
"duration": 10,
"arrivalRate": 2
}
]
},
"scenarios": [
{
"flow": [
{"get": {"url": "/"}}
]
}
]
}
Вот мои результаты:
Один кластер
All virtual users finished
Summary report @ 20:26:36(+0000) 2018-05-31
Scenarios launched: 20
Scenarios completed: 6
Requests completed: 6
RPS sent: 0.15
Request latency:
min: 20756.8
max: 115390.2
median: 68364.2
p95: 115390.2
p99: 115390.2
Scenario counts:
0: 20 (100%)
Codes:
200: 6
Errors:
ESOCKETTIMEDOUT: 14
# 4 Кластер
All virtual users finished
Summary report @ 20:22:09(+0000) 2018-05-31
Scenarios launched: 20
Scenarios completed: 4
Requests completed: 4
RPS sent: 0.15
Request latency:
min: 81288.9
max: 83085.9
median: 82870.6
p95: 83085.9
p99: 83085.9
Scenario counts:
0: 20 (100%)
Codes:
200: 4
Errors:
ESOCKETTIMEDOUT: 16
Обратите внимание, что в обоих сценариях коды имеют значение 200 (ОК)
О вашемвопросы:
Мой вопрос заключается в том, почему нет улучшения при запуске NodeJS в режиме кластера?
Не является обязательным, если ваш код не разбивает рабочую нагрузку на несколько частей, которыеможет работать все вместе в одно и то же время, а затем составлять результат в конце, вы не получите более быстрый результат. Производительность связана со скоростью процессора, а пропускная способность связана с числом процессоров + скорость процессора. (Это два разныхтопики).
Должно ли это что-то делать с тем, что оба NodeJSи артиллерия работает по той же системе?
Нет, артиллерия не оказывает влияния.Посмотрите на следующие рисунки. Единственный процесс, привязанный к ЦП, - это код сервера вашего узла (arti.js).
Single Cluster
4 Кластер
или Это код server.js, который неправильно написан для измерения производительности?
Точно, частично ответили раньше.Ваш код будет работать с ухудшением, если количество узловых серверов больше, чем доступные процессоры или vCPU.И это потому, что ваш код в основном однопоточный код.
С уважением