ConnectionError:连接丢失-在量角器中读取ECONNRESET

时间:2018-10-22 06:27:50

标签: protractor azure-sql-database cucumberjs selenium-grid2

我正在使用量角器52.2和黄瓜3.2.2。我将selenium grid(selenium-server-standalone-3.14.0.jar)与量角器一起使用,并在4个不同节点的4个浏览器中运行我的脚本。我在数据库中有一个600行的表。最初,我要访问此表中的数据,并通过量角器脚本输入每一行的数据,并在成功输入每一行后更新DB列。但是在成功输入一些行后,量角器脚本突然结束,错误为“ {ConnectionError: Connection lost - read ECONNRESET in protractor”。我在更新SQL查询中收到一条错误消息,该错误消息为“ RequestError:资源ID:1.”。数据库已达到60,并且已经达到。请参见“ http://go.microsoft.com/fwlink/?LinkId=267637”。”我正在使用的更新查询如下(我正在使用Azure SQL)。我不清楚如何解决此问题。预先感谢。

var Connection = require('tedious').Connection;
var Request = require('tedious').Request;
var config = 
{
 userName: 'xxx', 
 password: 'xxxxx', 
 server: 'xxxxxx', 
 options: 
    {
       database: 'xxx' ,
       encrypt: true,
       rowCollectionOnRequestCompletion: true
    }
}
var connection = new Connection(config);

defineSupportCode(function ({ setDefaultTimeout, Given, When, Then }) {
 setDefaultTimeout(30000 * 1000);
   function updatedb(LPAID){
      request = new Request("UPDATE COM_Location_Post with (rowlock) SET IsPublished = 1 WHERE Id ="+LPAID,function(err,rowCount, rows) { 
        if(err){
          console.log(err)
         }
      });
     connection.execSql(request);
  }
});

1 个答案:

答案 0 :(得分:0)

您未在脚本中使用连接关闭。

在遇到最大实例数后,您的问题就清楚了。

尝试每次关闭每笔交易的连接。

    (async () => {
            const config = {
                user: 'User',
                password: 'iPg$',
                server: 'cp-sql',
                database: 'DBI',
                options: {
                    encrypt: true // Use this if you're on Windows Azure
                }
            }
            try {

                let pool = await sql.connect(config)
                var envcode, testcode;
                let result1 = await pool.request()
                    .query(`query 1 goes here`)
                // console.dir(result1)
                pool.close();
                sql.close();
                let pool1 = await sql.connect(config)
                let result2 = await pool1.request()
                    .query(`query 2 goes here`)
                // console.dir(result2)
                pool1.close();
                sql.close();
                resolve(result2);
            } catch (err) {
                console.log(err)
            }
        })()