Цикл node.js сразу завершился с ошибкой при вставке больших данных в cassandra

Я пытаюсь вставить 1000000 данных на Кассандру с помощью nodeJS. Но цикл обрывается немного позже. Каждый раз я не могу вставить более 10000 записей. Почему сломался цикл, кто-нибудь, помогите мне.

Благодарю.

Мой код выглядит так:

var helenus = require('helenus'),
  pool = new helenus.ConnectionPool({
    hosts      : ['localhost:9160'],
    keyspace   : 'twissandra',
    user       : '',
    password   : '',
    timeout    : 3000
  });

pool.on('error', function(err){ 
    console.error(err.name, err.message); 
    }); 
var i=0; 
pool.connect(function(err, keyspace){ 
    if(err){ throw(err); 
    } else { 
        while (i<1000000){ 
            i++; 
            var str="tkg" + i; 
            var pass="ktr" + i; 
            pool.cql("insert into users (username,password) VALUES (?,?)",[str, pass],function(err, results){
            }); 
            } 
            } 
        });
    console.log("end"); 

2 ответа

Вы, вероятно, перегружаете очередь Cassandra, пытаясь сделать миллион запросов одновременно! Имейте в виду, что запрос является асинхронным, поэтому он выполняется, даже если предыдущий не был выполнен.

Попробуйте использовать async.eachLimit, чтобы ограничить его до 50-100 запросов одновременно. Фактическая максимальная параллельная емкость изменяется в зависимости от внутреннего процесса.

На самом деле проблем не было. Я проверил количество записей дважды в разное время и увидел, что операция записи продолжалась до значения тайм-аута. Значение времени ожидания указано внутри кода. В качестве резюме в коде нет сбоев, спасибо Джулиану Х. Лэму за ответ.

Но другой вопрос в том, как повысить производительность записи на кассандре? Что я должен изменить в файле cassandra.yaml или любой?

Спасибо.

Другие вопросы по тегам