node-postgresを使用して、postgresでnode.jsをいじり始めました。私がやろうとしたことの 1 つは、約 200,000 エントリのファイルを使用して、短い js を記述してデータベースにデータを入力することです。
しばらくすると (10 秒以内)、「エラー: 接続が終了しました」というメッセージが表示されるようになりました。これが node-postgres の使い方に問題があるのか、それとも postgres をスパムしていたからなのかはわかりません。
とにかく、この動作を示す簡単なコードを次に示します。
var pg = require('pg');
var connectionString = "postgres://xxxx:xxxx@localhost/xxxx";
pg.connect(connectionString, function(err,client,done){
if(err) {
return console.error('could not connect to postgres', err);
}
client.query("DROP TABLE IF EXISTS testDB");
client.query("CREATE TABLE IF NOT EXISTS testDB (id int, first int, second int)");
done();
for (i = 0; i < 1000000; i++){
client.query("INSERT INTO testDB VALUES (" + i.toString() + "," + (1000000-i).toString() + "," + (-i).toString() + ")", function(err,result){
if (err) {
return console.error('Error inserting query', err);
}
done();
});
}
});
約 18,000 ~ 20,000 回のクエリの後で失敗します。これは client.query の使い方が間違っていますか? デフォルトのクライアント番号を変更してみましたが、うまくいきませんでした。
client.connect() も役に立たないようですが、それは私があまりにも多くのクライアントを持っていたためだったので、クライアントプーリングが最善の方法だと思います.
助けてくれてありがとう!