我的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个连接吗?