【问题标题】:SQL Server Bulk insert throws request timeout error?SQL Server 批量插入引发请求超时错误?
【发布时间】:2020-05-09 21:35:29
【问题描述】:

以下代码将数据批量插入 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 加载测试后,它会抛出这个错误:

资源请求超时

【问题讨论】:

  • 你说“代码运行没有错误”是什么意思?它是在 JMeter GUI 还是 IDE 上?请详细说明“使用 jmeter 加载测试后”。这是否意味着您增加了一些负载,还是仅针对单个用户?
  • @MNavneetKrishna 当我在 jmeter 中以有限的请求进行测试时,假设 100 个线程(用户)它工作正常,但是当将线程数更改为 500 时,它开始抛出资源请求超时
  • 我觉得这是容量的问题,而不是工具的问题。已配置的 DB 中的最大连接大小是多少?什么是定义的连接超时?另外,您是否注意到 ResourceRequest 在一段时间后甚至在用户增加时出现超时错误?
  • 您真的需要以同步方式执行此操作吗?为什么不返回一些响应并在异步模式下执行批量操作?

标签: sql node.js sql-server bulkinsert timeoutexception


【解决方案1】:

尝试以下设置:

在您的 app.js 或您正在建立连接的位置。

const pool = new sql.ConnectionPool({
    user,
    password,
    server,
    database, 
    pool: { 
        max: 100000, 
        min: 1, 
        idleTimeoutMillis: 50, 
        evictionRunIntervalMillis: 5, 
        softIdleTimeoutMillis: 5
    }
});

我希望 Jmeter 也能顺利运行。

【讨论】:

    猜你喜欢
    • 2019-10-20
    • 2023-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-24
    • 1970-01-01
    相关资源
    最近更新 更多