Skip to content

Cluster losts handle when data size is large #13778

Closed
@goleoh

Description

@goleoh
  • Version: 4, 5, 6, (7, 8 maybe?)
  • Platform: linux
  • Subsystem:

when master to worker with some data with socket
and worker sends the received data to the master back with socket,
if the data size is above 10KB the socket disappeared.
here is the sample code

const cluster = require('cluster');
const net = require('net');

var doWork = function(worker) {
   var sock = new net.Socket();
   // available port and host
    sock.connect(443, 'google.com', function() {

        var data = [];
        for(var i=0; i<30000; i++) {
            data[i] = '1';
        };
       // 1. send to worker data with socket
        console.log('master to worker with socket %s', sock);
        worker.send({cmd:'syn', data:data}, sock);
    });
};

if ( cluster.isMaster ) {
    var num = 5;
    var workers = [];
    for(var i=0; i<num; i++) {
        workers[i] = cluster.fork();
        workers[i].on('message', function(m, h) {
            // 3. received from worker, socket is undefined.
            console.log('admin recv m %s, h %s, isNS', m.cmd, h, h? h instanceof net.Socket : 'na');
        });
    }
    for(var i=0; i<num; i++) {
        doWork(workers[i]);
    }
} else {
    process.on('message', function(m, h) {
       // 2. worker send data to master with socket
        console.log('worker m %s, h %s, isNS', m.cmd, h, h ? h instanceof net.Socket : 'na');
        process.send({cmd:'ack', data:m.data}, h);
    });
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    clusterIssues and PRs related to the cluster subsystem.confirmed-bugIssues with confirmed bugs.netIssues and PRs related to the net subsystem.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions