fix(db): 修复数据库断连后无法自动恢复的问题

- 添加连接超时配置防止无限等待
- 捕获连接池错误避免进程崩溃
- 缩短心跳检测间隔至5秒
This commit is contained in:
2026-02-27 08:56:19 +08:00
parent e44cf10a82
commit 58c3880732
3 changed files with 38 additions and 2 deletions

View File

@@ -20,6 +20,13 @@ class DatabaseManager {
database: this.config.database,
max: this.config.maxConnections,
idleTimeoutMillis: this.config.idleTimeoutMillis,
connectionTimeoutMillis: 5000, // 5秒连接超时防止断网时无限等待
});
// 监听连接池错误,防止后端断开导致进程崩溃
this.pool.on('error', (err, client) => {
console.error('[db] 发生未捕获的连接池错误:', err);
// 不抛出,让应用层通过心跳检测发现问题
});
// 测试连接

View File

@@ -327,14 +327,14 @@ class HeartbeatProcessor {
this.onDbOnline?.();
this.processBatch();
} else {
console.warn('数据库仍离线,1分钟后重试...');
console.warn('数据库仍离线,5秒后重试...');
this._scheduleDbCheck();
}
} catch (err) {
console.warn('数据库检查异常:', err);
this._scheduleDbCheck();
}
}, 60000);
}, 5000);
}
_emitDbWriteError(error, rawData) {