在nodejs上进行简单的压力测试Firebird时,我得到了致命的错误:分配失败 - JavaScript堆内存不足



这段代码正在工作。但是如果我取消评论无限循环,则没有结果。结束内存持续 2G,然后停止错误。

致命错误:CALL_AND_RETRY_LAST分配失败 - JavaScript 堆内存不足

我做错了什么?

var Firebird = require('firebirdsql'); // or require('node-firebird');
var options = {};
options.host = '127.0.0.1';
options.port = 3050;
options.database = 'D:\test\test.FDB';
// ...
Firebird.attach(options, function(err, db) {
    if (err)
        throw err;
// while (1)    { // endless loop BEGIN
    db.query('SELECT first 1000 a.* FROM EVENTS a ORDER BY a.DATETIME', function(err, result) {
        if (err) throw err;
                for(r of result) {
                    console.log(r.datetime, ""+r.event_text);
                    // console.log(r.DATETIME, ""+r.EVENT_TEXT);  // for require('node-firebird');
                };
        // IMPORTANT: close the connection 
        db.detach();
    });
// } // endless loop END
});

我认为这并不那么重要,但我在 Windows 6.3.1 上使用节点的 v10。

使用函数 setInterval 而不是 while 循环,并且不使用 throw 导致你退出程序。

Firebird.attach(options, function(err, db) {
    setInterval(
        function() {
            db.query('SELECT first 1000 a.* FROM EVENTS a ORDER BY a.DATETIME', function(err, result) {
                if (err) {
                    console.log("Error");
                }
                else {
                    for(r of result) {
                        console.log(r.datetime, ""+r.event_text);
                    };
                }
        // IMPORTANT: close the connection 
       //db.detach();
            });
        }, 1);
});

相关内容

最新更新