mysql - 我应该在 websocket 中关闭 mysql 连接吗
问题描述
简而言之,我正在使用 socket.io 创建一个聊天服务,我想知道我是否应该关闭 mysql 连接,然后在我必须使用它时重新打开它。此聊天服务每秒可能会收到 10-20 个事件。
我正在套接字外部创建连接:
const connection = mysql.createConnection({
host: 'localhost',
user: 'root',
password: '',
database: 'dbname',
})
并且仅用于在触发套接字事件时运行查询
socket.on('check_token', (token) => {
// token is verified safely, not passing it as it is.
connection.query("SELECT * FROM tokens WHERE token = '" + token + "'", (error, results, fields) => {...})
})
但是,我应该在完成释放 mysql 的工作后关闭连接吗?
或者,关闭连接并重新连接是否会使情况变得更糟,因为它会在触发事件时重新连接。
或者..有没有更好的方法我不知道?
解决方案
建立与数据库的连接需要很长时间。作业完成后,您不应断开与 db 的连接。应用服务器应该使用连接池。当您的服务器启动时启动您的池,例如 10 个并发连接。池大小(连接数量)取决于您的系统负载。有时你需要2个并发连接,有时100个。当你想从db中获取数据时,只需从pool中获取连接,不需要时返回。
推荐阅读
- laravel - 我想一起验证两列的唯一性
- react-native - undefined 不是对象(评估“module.type”)
- r - 在 r 中解释 GAM 模型输出图
- node.js - 'ng' 未被识别为 cmdlet 的名称
- c# - 嵌套的异步/等待未引发异常
- java - 我需要一个正则表达式模式,它匹配 digit 后跟 dot max 5 次,没有空格
- python-3.x - TypeError: __init__() 得到了一个意外的关键字参数“param_distributions”
- r - 使用正则表达式从 R 中的字符串中提取特定长度的数值
- html -
- 元素走出它的各自
界限 - python - 如何在休息时收到 TGT 后从 cas 成功注销