CentOS&x2B;Node.js(v8.15.0)和#x2B;将(v4.38.0)续集到Azure SQL间歇性连接问题

CentOS&x2B;Node.js(v8.15.0)和#x2B;将(v4.38.0)续集到Azure SQL间歇性连接问题,node.js,azure,sequelize.js,azure-sql-database,database-connection,Node.js,Azure,Sequelize.js,Azure Sql Database,Database Connection,在生产Azure托管的CentOS API服务器上,我们与Azure SQL数据库之间存在间歇性的Sequelize连接问题 我们的连接设置如下: const sequelize = new Sequelize(dbDatabase, dbUser, dbPassword, { host: dbHost, dialect: 'mssql', operatorsAliases: false, pool: { max: 5092, min: 0, acquire: 1000

在生产Azure托管的CentOS API服务器上,我们与Azure SQL数据库之间存在间歇性的Sequelize连接问题

我们的连接设置如下:

const sequelize = new Sequelize(dbDatabase, dbUser, dbPassword, {
 host: dbHost,
 dialect: 'mssql',
 operatorsAliases: false,
 pool: {
   max: 5092,
   min: 0,
   acquire: 10000,
   idle: 10000,
   evict: 500,
 },
 dialectOptions: {
 encrypt: false, // Use this if you're on Windows Azure
 requestTimeout: 60000 * 2,
 },
}
我们还将进程打开的文件的ulimit设置为系统最大值

我们正在使用PM2来运行服务器

我们的日志中有时大约每10-20分钟出现两个错误:

SequelizeConnectionError
    at Connection.connection.on (/home/AZ-admin/XXX/node_modules/sequelize/lib/dialects/mssql/connection-manager.js:75:16)
    at emitNone (events.js:106:13)
    at Connection.emit (events.js:208:7)
    at Connection.cleanupConnection (/home/AZ-admin/XXX/node_modules/tedious/lib/connection.js:568:16)
    at Connection.enter (/home/AZ-admin/XXX/node_modules/tedious/lib/connection.js:1961:12)
    at Connection.transitionTo (/home/AZ-admin/XXX/node_modules/tedious/lib/connection.js:993:26)
    at Connection.socketEnd (/home/AZ-admin/XXX/node_modules/tedious/lib/connection.js:1036:12)
    at Socket.<anonymous> (/home/AZ-admin/XXX/node_modules/tedious/lib/connection.js:877:18)
    at emitNone (events.js:111:20)
    at Socket.emit (events.js:208:7)
    at endReadableNT (_stream_readable.js:1064:12)
    at _combinedTickCallback (internal/process/next_tick.js:139:11)
    at process._tickCallback (internal/process/next_tick.js:181:9)
我们认为这可能会导致任何问题,从连接/文件被打开和未关闭的问题,到DNS查找域名的问题


这似乎与流量的增加有一定的联系,但相关性不是100%清楚。

我在
方言选项中看到您的示例代码缺少选项

它应该像下面这样

在此之前,我创建了一个示例项目来连接
mssql
mysql
。希望它能帮助你。更多详情,请在下面的帖子中查看我的答案


如果我的回复有帮助,请将其作为答案接受(单击回复旁边的标记选项,将其从灰色切换为填充)。请参阅我们添加了“加密:true”以及设置packetSize(我们在其他地方看到)并且都没有修复间歇性连接问题。没有加密集是否会导致间歇性问题?
SequelizeHostNotFoundError: Failed to connect to xxx-prod.database.windows.net:1433 - getaddrinfo ENOTFOUND xxx-prod.database.windows.net
    at Connection.connection.on.err (/home/XXX/node_modules/sequelize/lib/dialects/mssql/connection-manager.js:98:22)
    at emitOne (events.js:116:13)
    at Connection.emit (events.js:211:7)
    at Connection.socketError (/home/XXX/node_modules/tedious/lib/connection.js:1016:14)
    at /home/XXX/node_modules/tedious/lib/connection.js:861:25
    at GetAddrInfoReqWrap.callback (/home/XXX/node_modules/tedious/lib/connector.js:69:18)
    at GetAddrInfoReqWrap.onlookupall [as oncomplete] (dns.js:79:17)
"dialectOptions": {
    options: {
        encrypt: true,
    }
}