Почему синхронизация сообщения IPC от рабочего к мастеру медленная? (> 400ms) - PullRequest
0 голосов
/ 06 сентября 2018

У меня в настоящее время есть код Node JS (v10.9.0) ниже, чтобы проверить синхронизацию сообщения от дочернего процесса к мастеру с помощью IPC (межпроцессное взаимодействие):

var cluster = require('cluster');

var masterTimer
var workerTimer

if (cluster.isMaster) {

let testWorker = cluster.fork({
    workerId : 1

})

console.log("Hi from the master")

masterTimer = process.hrtime();

testWorker.on('message', function (msg) {
    console.log(msg.message)

    console.log("Elapsed (Master): " + process.hrtime(masterTimer)[1]/1000000 + "ms")

    testWorker.destroy()
})

workerTimer = process.hrtime();
testWorker.send({message: "Message from master to worker."})


} else {
if (process.env.workerId == 1) {

    setTimeout(() => {
        process.send({ message: 'Hi from the worker!' });    
    }, 3000);

    process.on('message', function (msg) {
        console.log(msg.message)

        console.log("Elapsed (Worker): " + process.hrtime(workerTimer)[1]/1000000 + "ms")

    })
}
}

Выходэтого кода на моем 8-ядерном издании MacBook Pro 2017 :

Hi from the master
Message from master to worker.
Elapsed (Worker): 113.685926ms
Hi from the worker!
Elapsed (Master): 476.501366ms

Это время отправки сообщения от рабочего к мастеру очень медленное по сравнению с сообщением от мастераработнику (примерно в 4 раза медленнее в этой точке данных).Кроме того, обмен сообщениями в целом медленен по сравнению с операциями с точностью до миллисекунды для отдельных операторов.Код проблематичен или медленный?

...