我Node.js的代碼就像下面爲什麼Node.js中的MySQL如此之慢?
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(...);
的問題是服務器將崩潰,當我刷新頁面太快。我認爲是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);
});
....
但問題還在這裏,爲什麼呢?我怎樣才能解決這個問題。編輯:我發射100個100個併發請求,預計10秒。但它需要20秒。爲什麼?池是否只支持最多5個連接?
什麼是查詢?它是否由適當的索引支持? –
你將需要發佈比僞代碼更多的幫助。 – JohnnyHK
查詢在命令行而不是通過節點運行時需要多長時間? –