Node.js helenus性能问题-新ConnectionPool的pool.connect()

Node.js helenus性能问题-新ConnectionPool的pool.connect(),node.js,helenus,Node.js,Helenus,我已经使用php和cassandra和phpcassa构建了一个事件api 最近,我编写了一个node.js+helenus来替换相同的api。完成后,我开始使用ab工具对node.js代码进行基准测试。但是,在cassandra上插入1000多次后,连接可能会丢失,故障转移代码正在运行。每次请求发生后,我都会向cassandra插入async 当节点应用程序启动时,我正在实例化ConnectionPool对象。但是,我在每个请求中使用pool.connect()函数 pool.connect(

我已经使用php和cassandra和phpcassa构建了一个事件api

最近,我编写了一个node.js+helenus来替换相同的api。完成后,我开始使用ab工具对node.js代码进行基准测试。但是,在cassandra上插入1000多次后,连接可能会丢失,故障转移代码正在运行。每次请求发生后,我都会向cassandra插入async

当节点应用程序启动时,我正在实例化
ConnectionPool
对象。但是,我在每个请求中使用
pool.connect()
函数

pool.connect()
是否从
ConnectionPool
对象启动新连接或绑定现有连接

注:

在phpcassa中,我没有遇到这样的问题,可能是因为我正在插入cassandra sync

我正在使用5个cassandra节点

是的,
pool.connect()
每次调用池时都会创建一个到池的新连接,因此通常在应用程序启动时只需调用一次,并将该连接传递给任何需要它的模块或方法

我通常使用一个模块来完成这项工作

module.exports = function(app, cb) {

    var domain  = require('domain'),
        d       = domain.create(),
        helenus = require('helenus'),

    d.run(function() {
        var pool = new helenus.ConnectionPool({
            hosts      : ['localhost:9160'],
            user       : "",
            password   : "",
            keyspace   : 'something',
            cqlVersion : '3.0.0'
        });

        pool.connect(function(err, keyspace){
            if(err){
                cb(err, null);
            } else {
                cb(null, pool);
            }
        });

        pool.on('error', function(err) {
            cb(err, null);
        });
    });

    d.on('error', function(err) {
        console.log('error', err.stack);
        cb(err, null);
    });
}
用这样的东西称它为我的应用程序(非常简单)

我已经用它处理了数百万条记录,连续插入和大量查找,没有任何问题,Cassandra对我来说比我尝试过的任何其他数据库都好

var express  = require('express');
var app      = this.express();
var database = require('db');

database(app, function(err, conn) {
    if (err==null) {
        // connected, do stuff
        conn.cql("SELECT * FROM table WHERE KEY = ?", [what], function(err, result) {
            if (err==null) {
                // get result
            }
        });
    }
});