首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NodeJS快件HTTP请求2分钟失速

NodeJS快件HTTP请求2分钟失速
EN

Stack Overflow用户
提问于 2018-06-20 19:56:59
回答 1查看 1.2K关注 0票数 0

我有一个运行快递的nodeJS服务器,我正在进行API调用,从一个角度应用程序访问服务器上的数据库。

当我对本地主机服务器进行2次以上的http调用时,总是会暂停2分钟。从chrome工具的图片中可以看到。

我一直在调查它,发现chrome一次不能有超过6个TCP连接。我是否正确地连接到数据库,如何防止这个2分钟的停顿?

Server.js

代码语言:javascript
复制
var express = require('express');
var app = express();
const sql = require('mssql');
var bodyParser = require('body-parser');
app.use(bodyParser.json()); // for parsing application/json
app.use(bodyParser.urlencoded({ extended: true }));

var dbConfig = {
    server: 'DATABASESERVER',
    database:'DB1',
    user:'ADMIN',
    password:'WHATEVERPASS',
    port:1600
};

var colorDBConfig = {
  server:'DATABASESERVER',
  database:'DB2',
  user:'ADMIN',
  password:'WHATEVERPASS',
  port:1700
};

var usersDBConfig = {
  server:'DATABASESERVER',
  database:'DB3',
  user:'ADMIN',
  password:'WHATEVERPASS',
  port:1800
};


app.get('/carlist',function(req,res){
  console.log("I have recieved car request");
    sql.close()
    sql.connect(dbConfig).then(pool => {
        return pool.request()
        .execute('dbo.getCarsJoinColor')
    }).then(result => {
        var carlist = result.recordsets[0];
        res.json(carlist);
        sql.close()
    }).catch(err => {
        console.log("Oopsy Woopsy that's not right!");
        console.log(err);
        sql.close();
        return err;
    })
});

app.get('/carcolorlist',function(req,res){
    console.log("modal request recieved");
    sql.close()
    sql.connect(colorDBConfig).then(pool => {
        return pool.request()
        .execute('dbo.getColorCarsJoinCars')
    }).then(result => {
        var carColorList = result.recordset;
        res.json(carColorList);
        sql.close()
   }).catch(err => {
        console.log("Oopsy Woopsy that's not right!");
        console.log(err);
        sql.close();
      return err;
   })
});

app.post('/login', function(req, res) {
  sql.close()
  sql.connect(usersDBConfig).then(pool => {
    return pool.request()
    .query('SELECT * FROM Users.dbo.Accounts WHERE Name = ' + "'" + req.body.QNumber + "'" + 'AND Password = ' + "'" + req.body.Password + "'")
  }).then(result => {
    var user = result.recordset;
    res.json(user);
    sql.close()
  }).catch(err => {
    console.log("Oopsy Woopsy that's not right!");
    console.log(err);
    sql.close();
    return err;
  })
})
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-21 18:57:46

必须建立全局连接,然后为每个路由使用这些全局连接。

代码语言:javascript
复制
var dbConn = new sql.ConnectionPool(dbConfig);
var dbColorConn = new sql.ConnectionPool(colorDBConfig);
var dbUserConn = new sql.ConnectionPool(usersDBConfig);

//Within the route
var request = new sql.Request(dbConn);
request.execute('dbo.getUsers').then(function (result) {
res.json(result.recordsets[0]);
dbConn.close();
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50956123

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档