SQL Server批量插入会抛出请求超时错误?

4
以下代码可批量将数据插入到SQL Server数据库中:
sqlConnection.connectionPool.getConnection().then(pool => {
    const request  = pool.request();
        request.bulk(table, (err, result) => {
            if(err){
                console.log('bulk insert error');
                console.log(err);
                reject(err);
                return;
            }


                EXEC dbo.AddSurveyPoints @SurveyPointTable = @Table

                DROP TABLE `+tableName+`;`;
                  request.query(exeProcedure, function(err, recordset){
                      if(err){
                          console.log('Error addSurveyPoints :' + err);
                          reject(err);
                          return;
                      }
                      fulfill(result);
                  });
              });
        })

代码没有出现错误。 但是在用jmeter进行测试后,它抛出了这个错误: 资源请求超时。

1
当你说“代码运行无误”时,你是什么意思?是在JMeter GUI还是IDE上?请详细说明“在使用jmeter进行测试后”。这是否意味着你已经添加了一些负载,还是只有一个用户? - M Navneet Krishna
@MNavneetKrishna 当我在JMeter中使用有限的请求进行测试,比如100个线程(用户),它可以正常工作。但是当我将线程数更改为500时,它开始抛出资源请求超时的错误。 - Aimal Khan
我觉得这可能是容量问题,而不是工具问题。已经配置的数据库最大连接数是多少?连接超时时间定义是什么?此外,您是否注意到 ResourceRequest 超时错误在一段时间后甚至在用户增加期间就会出现? - M Navneet Krishna
你真的需要同步执行吗?为什么不返回一些响应并在异步模式下执行批量操作呢? - rpereira15
1个回答

0
尝试以下设置:
在您的app.js或建立连接的地方。
const pool = new sql.ConnectionPool({
    user,
    password,
    server,
    database, 
    pool: { 
        max: 100000, 
        min: 1, 
        idleTimeoutMillis: 50, 
        evictionRunIntervalMillis: 5, 
        softIdleTimeoutMillis: 5
    }
});

我希望这也能在Jmeter中顺利运行。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接