为什么Node.js中的MySQL如此之慢?

Gar*_*bin 7 mysql node.js node-mysql

我的Node.js代码如下所示

CODE1:下面

var http=require('http');
var MySQL = require('mysql');

mysql = MySQL.createConnection(...)

http.createServer(function(req, res){
    // the query will take several seconds
    mysql.query("SELECT SLEEP(1)", function....)
});
http.listen(...);
Run Code Online (Sandbox Code Playgroud)

问题是当我刷新页面太快时服务器将崩溃.我认为是node-mysql模块的问题,它在队列中处理查询.所以我尝试创建一个连接池.

CODE2:下面

....
var pool = require('generic-pool');
var mp   = pool.Pool({
    ...
    create: function(cb){
        client = MySQL.createConnection(...);
        cb(null, client)
    },
    max: 10, // up to 10 connection
    min: 2,
    ...
});
....
    mp.acquire(function(err, mysql){

        // the query will take several seconds
        mysql.query("SELECT SLEEP(1)", function....)
        mp.release(mysql);
    });
....
Run Code Online (Sandbox Code Playgroud)

但问题还存在,为什么?我怎样才能解决这个问题.

编辑:我发出100个并发100个请求,预计10秒.但它需要20秒.为什么?该池最多只支持5个连接吗?

OMG*_*OMG 1

连接池是处理多个并发请求的一个很好的解决方案。但是我们为什么不能使用 mysql 特定的池,而不是使用“通用资源池”呢?

链接讨论“ node-mysql-pool ”,它是 Node.js 的 MySQL 连接池