在每秒大约 500-600 个请求的高负载服务器上进行测试。经过数小时的调试,我最终得到了一个简单的 HTTP 服务器。
我注意到当响应体更大时,比如说 60k,我收到了这个错误:
(node) warning: possible EventEmitter memory leak detected. 11 listeners added. Use emitter.setMaxListeners() to increase limit.
Trace
at Socket.EventEmitter.addListener (events.js:160:15)
at Socket.Readable.on (_stream_readable.js:679:33)
at Socket.EventEmitter.once (events.js:179:8)
at TCP.onread (net.js:527:26)
在那之后 CPU 就疯了
但是,使用完全相同的代码,当响应设置为 10k 的文本时,一切都很顺利。诡异的...
有没有人遇到过这个???请求帮助。
这是完整的脚本:
var
cluster = require('cluster'),
numCPUs = require('os').cpus().length;
if(cluster.isMaster){
for (var i = 0; i < numCPUs; i++) cluster.fork();
cluster.on("exit", function(worker, code, signal) {
cluster.fork();
});
}
else{
var http = require('http');
var app = function(req, res){
res.writeHead(200, {'Content-Type': 'text/html', 'Access-Control-Allow-Origin': '*'});
res.end( 60k_of_text___or___10k_of_text );
};
http.createServer(app).listen(80);
}