node.js - 在 Node 应用程序上触发许多请求进行测试,导致套接字挂起/ECONNRESET 错误

标签 node.js express brute-force supertest

我正在尝试为我的应用程序编写一个测试,其中我使用了 express-brute以防止暴力攻击。

我有以下测试:

it('should return 429 status after 1000 attempts', function (done) {
    this.timeout(5000);

    var counter = 0;

    var makeRequest = function (count, done) {
        counter++;
        request(app)
        .post('/login')
        .send({ username: 'a+' + count + '@b.com', password: 'wrong' + count })
        .end(function (err, res) {

            if (err) {
                console.log('failed request #', counter); 
                return done(err);
            }

            if (counter < 1001) {
                makeRequest(counter, done);
            }
            else {
                res.header.location.should.equal('/account/login');
                res.statusCode.should.equal(429);
                done();
            }
        });
    }

    makeRequest(counter, done);
});

这会引发错误:

Error: socket hang up sometimes it is Error: read ECONNRESET

它总是围绕连接#225

相同的测试(只有 20 个左右的请求)工作正常(如果我更改我的express-brute 配置)

什么原因导致它出错?

我是否没有正确关闭/处理连接?

最佳答案

您使用什么操作系统?

可能需要增加允许打开的套接字数量。

例如,请参见此处:How to increase limits on sockets on osx for load testing?

关于node.js - 在 Node 应用程序上触发许多请求进行测试,导致套接字挂起/ECONNRESET 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22272907/

相关文章:

algorithm - "Face-up"纸牌算法

javascript - Sails.js 全局引用一个包

node.js - Express JS、Mongoose JS 和 Jade 中的文本区域换行

express - Jade mixin 用于 "each"/"for"循环给出 JS_Parse_Error

Python RSA 暴力破解

python - 如何查找列表 B 中有多少项形成列表 A

javascript - Typescript 中的条件默认导出

javascript - Selenium 通过 Node.js 和 webdriverIO : timeout without effect

node.js - express 错误 500 错误 : Failed to lookup view "/app/views/admin/users"

javascript - 如何避免用作快速路由回调的函数中的 'this' 问题