【发布时间】:2024-01-08 06:49:01
【问题描述】:
我们有一个运行一些 nodeJS 服务的 AWS 服务器。连接到 MS sql 的服务随机崩溃,并显示消息“无法连接到数据库服务器:1433 - 无法连接(序列)”。
我们正在运行:
应用服务器: Linux Ubuntu 14.4 AWS m5 节点JS:8.11.2 服务正在使用包 mssql 最新版本 (4.3.0)。这包括乏味的 2.7.1。
数据库服务器: 视窗服务器 2012。 sql server 2012
吞吐量:大约 300 rpm,当吞吐量较低(大约 20 rpm)时也会发生错误。 应用通过 PM2 在集群中运行(运行 4 次)。我们看到错误同时发生在所有 4 个实例上,但有时也会发生在 1 或 2 个实例上。
我们尝试了什么:
- 使用繁琐的 3.0.1 升级到 mssql 的 alpha 版本。没有影响
- 从 Amazon M4 机器升级到具有增强网络功能的 M5 机器
- 在应用程序中更改池设置。我们尝试将最小连接数设置为 0 或低/高值。最大也为低/高值,但无济于事。
- 将服务器复制到新机器。
- 将 idleTimeoutMillis 设置为 1 秒
- ping 数据库服务器以查看是否存在连接问题,但是当错误发生时我们没有看到奇怪的 ping。
应用启动时的连接:
App.sqlConnection = new App.SQL.ConnectionPool(config, function(err) {
if(err){
Log.error(err);
process.exit(1);
}
App.sqlConnection.on('error', err => {
Log.error(`There was a connection err : ${err}`);
process.exit(1);
});
});
请求;
var request = new App.SQL.Request(App.sqlConnection);
request.query(sQuery, function(err,results)
{
});
错误被“on error”处理程序捕获。
错误在服务中随机发生。有些人比其他人有更多的错误实例。 我们的选择已经不多了。知道我们是否可以看到更详细的错误吗?
【问题讨论】:
标签: node.js sql-server connection sequence tedious