Express.js重置连接

时间:2018-02-10 21:17:59

标签: javascript node.js express nginx bluebird

我有一个非常非常简单的Express.js应用程序,但是当它遇到大量的POST请求时,它会重置其中一些的连接。

以下是应用代码:

var http = require("http");
var express = require("express");
var BPromise = require("bluebird");

var app = express();

function my_route(req, res) {
    var array = [];
    for (var j = 0; j < 1000; ++j)
        array.push(Math.random());
    array.sort();

    BPromise.resolve(true)
    .then(function(){
        res.send(true);
    });
}

app.use("/", my_route);

var server = http.createServer(app);
server.listen(1390, function() {
    console.log("Launched server.");
});

我让这个代码在一个非常普通的NGINX反向代理后面以集群模式(通过PM2)运行。 为了测试配置,我正在使用足够的POST来填充来自运行apache bench的单独服务器的CPU利用率:

ab -n 600000 -p body.json -c 32 [my public ip address]

在发送的600000个请求中,可能有1-4个回复非2xx响应。 Nginx日志有以下错误:

recv() failed (104: Connection reset by peer) while reading response header from upstream

Nginx提供的错误告诉我问题不在于Nginx,而在于Express,Node或Bluebird。我正在运行Node v8.9.4,Express v4.16.2,Bluebird v3.5.1和Nginx v1.13.8。

任何人都可以帮我弄清楚快递挂断电话的原因吗?谢谢你的帮助!

0 个答案:

没有答案