如何避免因API流量大而导致的超时错误?

时间:2019-06-12 23:08:13

标签: node.js mongodb azure api mongoose

我在Node.JS中设置了一个API,使用Mongoose连接到Azure上的MongoDB。通过少量的调用,API便可以正常运行并且成功存储了所有数据。 但是,一旦增加流量,就会开始出现TimeOut连接错误。

我正在使用insertMany,因为每个有效负载可以具有多个记录,但是有效负载并不是特别大。我还提高了Azure集合的吞吐量,以确保它可以处理有效负载的大小(由于请求大小,在执行此操作之前这是错误的)。

我试图遍历数据以逐一添加到每个记录中,而不是insertMany,但是保存的结果不一致(即,它并不总是将每个3保存在每个有效负载中),但是这样做似乎避免了超时问题。

这是MongoDB连接的代码:

mongoose
    .connect(db_url, {
        useNewUrlParser: true
    }).then(() => {
        return next();
    })
    .catch(err => {
        res.status(500).send({
            status: 500,
            message: "Internal server error"
        });
        mongoose.connection.close();
    });


This is the code that is saving the data:

MODEL.insertMany(jsonData, function(err, results) {
    if (err) {
        console.error(err);
        res.status(500).send({
            status: 500,
            message: "Internal server error"
        });
    } else {
        res.status(200).send({
            status: 200,
            message: "Record(s) saved"
        });
    }
});

这是我遇到的错误:

{ Error: connect ETIMEDOUT 
    at Object._errnoException (util.js:992:11)
    at _exceptionWithHostPort (util.js:1014:20)
    at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1186:14)
  code: 'ETIMEDOUT',
  errno: 'ETIMEDOUT',
  syscall: 'connect',
  address: '',
  port: }

0 个答案:

没有答案