You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Is it possible and recommended to use cluster in childprocess (ipc-server.js) to improve server performance with more than 1 cpu?
try the following implementation according to the ipc-node documentation:
function init(socketName, handlers) {
ipc.config.unlink = false
if (cluster.isMaster) {
if (fs.existsSync(socketPath)) {
fs.unlinkSync(socketPath)
}
for (let i = 0; i < cpuCount; i++) {
cluster.fork()
}
} else {
ipc.serve(socketPath, () => {
ipc.server.on('message', (data, socket) => {
let msg = JSON.parse(data)
let { id, name, args } = msg
if (handlers[name]) {
handlers[name](args).then(
(result) => {
ipc.server.emit(socket, 'message', JSON.stringify({ type: 'reply', id, result }))
},
(error) => {
// Up to you how to handle errors, if you want to forward
// them, etc
ipc.server.emit(socket, 'message', JSON.stringify({ type: 'error', id }))
throw error
}
)
} else {
console.warn('Unknown method: ' + name)
ipc.server.emit(socket, 'message', JSON.stringify({ type: 'reply', id, result: null }))
}
})
})
ipc.server.start()
console.log(`pid ${process.pid} listening on ${socketPath}`);
}
But I get an error: TypeError: handle.setSimultaneousAccepts is not a function at ChildProcess.target._send (internal/child_process.js:761:16) at ChildProcess.target.send (internal/child_process.js:676:19) at sendHelper (internal/cluster/utils.js:22:15) at send (internal/cluster/master.js:351:10) at internal/cluster/master.js:317:5 at SharedHandle.add (internal/cluster/shared_handle.js:29:3) at queryServer (internal/cluster/master.js:311:10) at Worker.onmessage (internal/cluster/master.js:246:5) at ChildProcess.onInternalMessage (internal/cluster/utils.js:43:8) at ChildProcess.emit (events.js:215:7)
Any help is welcome thanks.
The text was updated successfully, but these errors were encountered:
Is it possible and recommended to use cluster in childprocess (ipc-server.js) to improve server performance with more than 1 cpu?
try the following implementation according to the ipc-node documentation:
`const ipc = require('node-ipc')
const fs = require('fs')
const cpuCount = require('os').cpus().length
const cluster = require('cluster')
const socketPath = '/tmp/ipc.sock'
function init(socketName, handlers) {
ipc.config.unlink = false
if (cluster.isMaster) {
if (fs.existsSync(socketPath)) {
fs.unlinkSync(socketPath)
}
for (let i = 0; i < cpuCount; i++) {
cluster.fork()
}
} else {
}
function send(name, args) {
ipc.server.broadcast('message', JSON.stringify({ type: 'push', name, args }))
}
module.exports = { init, send }`
But I get an error:
TypeError: handle.setSimultaneousAccepts is not a function at ChildProcess.target._send (internal/child_process.js:761:16) at ChildProcess.target.send (internal/child_process.js:676:19) at sendHelper (internal/cluster/utils.js:22:15) at send (internal/cluster/master.js:351:10) at internal/cluster/master.js:317:5 at SharedHandle.add (internal/cluster/shared_handle.js:29:3) at queryServer (internal/cluster/master.js:311:10) at Worker.onmessage (internal/cluster/master.js:246:5) at ChildProcess.onInternalMessage (internal/cluster/utils.js:43:8) at ChildProcess.emit (events.js:215:7)
Any help is welcome thanks.
The text was updated successfully, but these errors were encountered: