тестирование кластера nodejs с помощью теста Apache - PullRequest
0 голосов
/ 31 декабря 2018

В настоящее время меня интересует модуль кластера nodejs для реализации мультиобработки.

Вот код, который поможет объяснить мою проблему.

process.env.UV_THREADPOOL_SIZE = 1;

const cluster = require('cluster');

if(cluster.isMaster){

    cluster.fork();
    cluster.fork();

} else {
    const express = require('express');
    const crypto = require('crypto');

    const app = express();

    app.get('/', (req, res) => {
       crypto.pbkdf2('a', 'b', 100000, 512, 'sha512', () => {
           res.send('benchmark test');
        });
    });

    app.listen(3000, () => {
        console.log('listen on port 3000');
    });
}

Я установил UV_THREADPOOL_SIZE 1 для простоты (по умолчанию 4)

Я использую MacBook Pro 2017 года, который является двухъядерным компьютером с 4 потоками (логическими ядрами)

и функцией pbkdf2 внутри этого кодаОбработка на моем компьютере занимает около 1 секунды.(точнее, 970 мс)

Я использую тест Apache для тестирования производительности, но у меня возникла путаница.

с командой,

ab -c 4 -n 4 localhost:3000/

Time taken for tests:   1.785 seconds
Complete requests:      4
Failed requests:        0
Total transferred:      840 bytes
HTML transferred:       44 bytes
Requests per second:    2.24 [#/sec] (mean)
Time per request:       1785.403 [ms] (mean)
Time per request:       446.351 [ms] (mean, across all concurrent requests)


Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    0   0.0      0       0
Processing:  1769 1779   7.1   1783    1785
Waiting:     1769 1779   7.3   1783    1785
Total:       1769 1779   7.1   1783    1785

на моем компьютере установлено дваядра (физические ядра), и есть два экземпляра nodejs (кластеры).

, поэтому я подумал, что одно ядро ​​займет один экземпляр.

, поэтому, когда четыре запроса вступают в игру одновременно,

Я предположил, что первые 2 запроса должны быть обработаны, а последние 2 запроса должны быть обработаны.

, но 4 запроса обрабатываются одновременно, а время соединения min и max почти одинаково.

Любой совет будет очень признателен.

...