为了账号安全,请及时绑定邮箱和手机立即绑定

Node并发访问时与猜想的结果不致

Node并发访问时与猜想的结果不致

翻阅古今 2018-11-21 18:13:01
试验的逻辑比较简单, 就是Node访问数据库查询数据, SQL语句的执行时间在2秒左右, 我用JMeter进行多线程测试(5线程),按照预想的结果(根据Node非堵塞特性), 应该是5线程同时在2秒返回结果, 但是结果是这样的:按照结果来看, Node成串行执行了, 这和预想的结果完成不一致啊, 哪位能解释一下代码:app.get('/', function (req, res) {    var now = +(new Date())    connection.query('select count(*) from ACTIVITY group by name', function (err, result, fields) {        var curr = +(new Date())        var tmp = '耗时:' + (curr - now)        console.log(tmp)        res.send(tmp)    })})注: 不是数据库处理的问题, 因为我用两台不同的机器, 执行相同的SQL语句, 时间都2秒
查看完整描述

1 回答

?
慕无忌1623718

TA贡献1744条经验 获得超4个赞

时间起始是 query 之前,结束是 query 完成,所以每个时间是 query 运行的时间,

Node 是异步了,但是你用的是同一个 connection,connection 本身是不是需要排队呢?据我所知,多数数据库在同一个 connection 中执行的 SQL 都是排队挨个进行的……多个 connection 之间可能会并行。


查看完整回答
反对 回复 2018-12-25
  • 1 回答
  • 0 关注
  • 482 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信