2014-10-27 34 views
0

我試圖用nodeJS向cassandra插入1000000數據。但是這個循環稍後會崩潰。每次我不能插入10000條以上的記錄。爲什麼循環崩潰有人幫助我。node.js循環在將批量數據插入到cassandra時立即崩潰

謝謝。

我的代碼如下所示:

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

你可能會通過試圖賺一百萬請求一下子超載卡桑德拉隊列!請記住,請求是異步的,因此即使前一個請求尚未完成也是如此。

嘗試使用async.eachLimit將其一次限制爲50-100個請求。實際的最大併發容量基於後端進程而改變。

+0

但是如果你有一個應該每秒鐘寫一個miliion的場景?如何處理?考慮寫入請求超過一百萬次每秒的高流量站點的情況。 – 2014-10-27 20:07:23

0

其實沒有問題。我在不同的時間檢查了兩次記錄的次數,我發現寫操作一直持續到超時值。超時值在代碼中給出。作爲代碼的總結,沒有崩潰,感謝Julian H. Lam的回覆。

但是另一個問題是如何提高cassandra的寫入性能?我應該在cassandra.yaml文件中更改什麼?

謝謝。