私の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(...);
問題は、ページの更新が速すぎるとサーバーがクラッシュすることです。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 つの接続しかサポートしていませんか?