windows下fork多子进程只有一个子进程会响应
在看深入浅出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下可行