windows下fork多子进程只有一个子进程会响应
发布于 9 年前 作者 westAnHui 4178 次浏览 最后一次编辑是 8 年前 来自 问答

在看深入浅出nodejs中发现的情况 js代码如下 这个是master的

  var fork = require('child_process').fork;
  
  var child1 = fork('./worker.js');
  var child2 = fork('./worker.js');
  
  var server = require('net').createServer();
  server.on('connection', function(socket) {
	  socket.end('handled by parent\r\n');
  });
  
  server.listen(1337, function() {
	  child1.send('server', server);
	  child2.send('server', server);
  });

这个是worker的

  process.on('message', function(m, server) {
	  if(m === 'server') {
		  server.on('connection', function(socket) {
			  socket.end(process.pid + 'handled by child\r\n');
		  });
	  }
  });

同样的代码在linux下是可以看到每次接受请求的可能是不同worker或者是parent 但是windows永远都是第一个worker,写了一个bat脚本也是如此

  @echo off
  :vor
  curl http://127.0.0.1:1337
  ping -n 1 127.0.0.1>nul
  goto vor

求助。。。

1 回复

你这个是老问题了。。。。就算你用cluster模块都没用,官方api就标记这个在windows下有问题,包括pm2,windows下也只是beta的状态 单机多进程负载 目前就只有linux下可行

回到顶部